首先需在config文件的<configSections>节点中增加子节点配置。
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
 
接着在<configuration>节点下配置我们定义的log4net 节点
log4net节点下可以配置多个<appender>子节点,每个<appender>子节点代表一种日志记录方式,有以下几种:
 
AdoNetAppender:利用ADO.NET记录到数据库的日志。
AnsiColorTerminalAppender:在ANSI 窗口终端写下高亮度的日志事件。
AspNetTraceAppender:能用asp.net中Trace的方式查看记录的日志。
BufferingForwardingAppender:在输出到子Appenders之前先缓存日志事件。
ConsoleAppender:将日志输出到控制台。
EventLogAppender:将日志写到Windows Event Log. 
FileAppender:将日志写到文件中。
LocalSyslogAppender:将日志写到local syslog service (仅用于UNIX环境下). 
MemoryAppender:将日志存到内存缓冲区。
NetSendAppender:将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。
RemoteSyslogAppender:通过UDP网络协议将日志写到Remote syslog service。
RemotingAppender:通过.NET Remoting将日志写到远程接收端。
RollingFileAppender:将日志以回滚文件的形式写到文件中。
SmtpAppender:将日志写到邮件中。
TraceAppender:将日志写到.NET trace 系统。
UdpAppender:将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播。
 
本文将介绍常用的FileAppender 、RollingFileAppender、 ConsoleAppender、AdoNetAppender 这三种记录方式的相关配置。
首先看看FileAppender
<!--定义输出到文件中-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<!--定义文件存放位置-->
<file value="D:\123.txt" />
<!--是否追加到文件-->
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />
</layout>
</appender>
 
RollingFileAppender
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name= "File" value= "D:\App_Log\servicelog\"/>
<!--是否是向文件中追加日志-->
<param name= "AppendToFile" value= "true"/>
<!--log保留天数-->
<param name= "MaxSizeRollBackups" value= ""/>
<!--日志文件名是否是固定不变的-->
<param name= "StaticLogFileName" value= "false"/>
<!--日志文件名格式为:--.log-->
<param name= "DatePattern" value= "yyyy-MM-dd&quot;.read.log&quot;"/>
<!--日志根据日期滚动-->
<param name= "RollingStyle" value= "Date"/>
<layout type="og4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n %loggername" />
</layout>
</appender>
ConsoleAppender
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR" />
<foreColor value="Red, HighIntensity" />
</mapping>
<mapping>
<level value="Info" />
<foreColor value="Green" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%n%date{HH:mm:ss,fff} [%-5level] %m" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Info" />
<param name="LevelMax" value="Fatal" />
</filter>
</appender>
 
AdoNetAppender
<appender name="ErrorLog_DBLog" type="log4net.Appender.AdoNetAppender">
<bufferSize value="" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source= 172.17.22.12:1101;initial catalog=Gance;persist security info=True;user id=Fie_DEV;password=F_DEVDEV;Persist Security Info=True;" />
<commandText value="insert into [ErrorLog] ([ID],[LogMessage],[LogException],[Source],[LogDate],[LogLevel],[UserId],[LogModule],[ServerIp]) values (@id,@message,@exception, @source, @date, @level,@userid,@logmodule,@serverip)" />
<parameter>
<parameterName value="@id" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="Id" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="-1" />
<layout type="log4net.Layout.PatternLayout" value="%message" />
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="-1" />
<layout type="log4net.Layout.PatternLayout" value="%exception" />
</parameter>
<parameter>
<parameterName value="@source" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="Source" />
</layout>
</parameter>
<parameter>
<parameterName value="@date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<parameter>
<parameterName value="@level" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.PatternLayout" value="%level" />
</parameter>
<parameter>
<parameterName value="@userid" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="UserId" />
</layout>
</parameter>
<parameter>
<parameterName value="@logmodule" />
<dbType value="Int16" />
<layout type="log4net.Layout.PatternLayout" value="%property{LogModule}" />
</parameter>
<parameter>
<parameterName value="@serverip" />
<dbType value="String" />
<size value="" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="ServerIp" />
</layout>
</parameter>
</appender>
 配置参数
 

轉換字符

效果

a

等同於 appdomain

appdomain

用于输出日誌事件發生的AppDomain的一個友好的名字

c

等同於logger

C

等同於type

class

等同於type

d

等同於date

date

用於輸出日誌事件在當前時區中的日期.若要輸出通用時間,請使用%utcdate模式.日期轉換指定符後可以跟隨一對閉合的花括號, 花括號裡面為日期格式指定符.例如: %date{HH:mm:ss,fff}或%date{dd MMM yyyy HH:mm:ss,fff},若沒有指定任何格式,默認為ISO8601(Iso8601DateFormatter).格式指定符和TOString的語法一樣.為了達到較好的效果,建議使用log4net日期格式化器.他們可以使用以下一個字符串”ABSOLUTE”,”DATE”,”ISO8601”來分別指定AbsoluteTimeDateFormatterDateTimeDateFormatter和Iso8601DateFormatter.例如: %date{ISO8601} or %date{ABSOLUTE}.這些專用的日期格式化器效果比ToString好很多.

exception

用於輸出連同日誌信息一起傳入的異常.如果一個異常對象被儲存在日誌記錄事件中,他將會被帶有trailing newline的模式輸出.否則,不會.

F

等同於 file

file

用於輸出引發日誌記錄請求的文件名稱.例如: c:\inetpub\wwwroot\logtest\webform1.aspx.cs警告:產生呼叫者的位置信息相當慢.盡量避免使用,除非執行速度不是問題.

identity

用於輸出當前用戶的用戶名(Principal.Identity.Name).警告:產生呼叫者的位置信息相當慢.盡量避免使用,除非執行速度不是問題.

l

等同於location

L

等同於line

location

用於輸出產生日誌記錄事件的呼叫者的位置信息.此位置信息依賴於CLI的實現,但是他通常為命名空間限制的方法且後用跟用圓括號括起來的呼叫者文件名和行號.例如:LogTest.WebForm1.Button3_Click(c:\inetpub\wwwroot\logtest\webform1.aspx.cs:93)位置信息非常有用.然而,他的產生相當慢. 盡量避免使用,除非執行速度不是問題.

level

用於輸入記錄事件的等級.

line

用於輸出引發日誌記錄請求的行號.警告:產生呼叫者的位置信息相當慢.盡量避免使用,除非執行速度不是問題.

logger

用於輸出日誌記錄事件的日誌名字.這個日誌轉換符後面可以跟精度,精度是十進制常量,用花括號括起來.如果指定了精度符,則只會輸出從右向左的相應數目的名字,默認為輸入全部.如下:日誌記錄器的名字為”a.b.c”, %logger{2}將會輸出”b.c”

m

等同於message

M

等同於 method

message

用於輸出應用程式提供給日誌記錄事件的信息.

mdc

MDC(舊名: ThreadContext.Properties)是聯合事件屬性的一部份.這個模式支持兼容性,但是等同於property.

method

用於輸出引發日誌記錄請求的方法的名字.警告:產生呼叫者的位置信息相當慢.盡量避免使用,除非執行速度不是問題.

n

等同於 newline

newline

換行,等同於”\n”或”\r\n”

p

等同於 level

P

等同於 property

properties

等同於 property

property

用於輸出一個事件的指定的屬性.屬性名字要以花括號括起來並且直接放到property後面.例如:%property{user}.日誌中的每一個屬性指都需要單獨指定.Properties是日誌記錄器或追加器添加到事件中的.默認屬性為log4net:HostName,它是引發產生記錄事件的機器名字.若果沒有指定關鍵字,比如: %property ,將會將鍵值以逗號分格列表

r

等同於 timestamp

t

等同於thread

timestamp

用於輸出從程式啟動到日誌記錄事件建立的時間,以毫秒記.

thread

用於輸出引發日誌記錄事件的線程的名字,若無線程名,則用線程號.

type

所用同logger警告:產生呼叫者的位置信息相當慢.盡量避免使用,除非執行速度不是問題.

u

等同於 identity

username

用於輸出當前用戶的WindowsIdentity警告:產生呼叫者的位置信息相當慢.盡量避免使用,除非執行速度不是問題.

utcdate

使用同date

w

等同於 username

x

等同於 ndc

X

等同於 mdc

%

%%輸出一個%

Log4net 配置详解的更多相关文章

  1. log4Net配置详解

    <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSe ...

  2. Log4Net使用详解

    1.Log4Net环境的搭建与基本配置 (1)Log4Net框架介绍     Log4net 是 Apache 下一个开放源码的项目,它是Log4j 的一个克隆版.我们可以控制日志信息的输出目的地.L ...

  3. (转)log4net使用详解

    说明:本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括M ...

  4. 转:log4net使用详解

    说明:本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括M ...

  5. Log4j配置详解(转)

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  6. logback 常用配置详解<appender>

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  7. [转]阿里巴巴数据库连接池 druid配置详解

    一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...

  8. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

  9. logback配置详解3<filter>

    logback 常用配置详解(三) <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一.返回DENY ...

随机推荐

  1. USART笔记 基于STM32F107VCT6

    USART   通用同步异步收发器 通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换.USART利用分数波特率发生器提供宽范围的 ...

  2. Qt的Script、Quick、QML的关系与总结

    背景 最近在学QML,感觉也不难,就是一直以来接触 Qt 的脚本类的东西的顺序是Script.Quick1.Declarative.Quick2.QML.那么每一个都是干什么的呢,这些东西搞的我有点混 ...

  3. 哪些产品不用开发原生APP,微信公众号就够了?

    最近一阶段H5技术被推到高峰,很多人认为借助H5就能利用微信公众号取代APP原生应用了,而事实是怎么样的?这里我从产品层做一个客观分析. 一,原生APP总体趋势 要谈APP是否会被微信取代,那么必须回 ...

  4. JAVA常用类库简介(转)

    Java编程语言中为方便学习者学习,编制了许多类,这些类已经经过测试,都是我们编程的基础.如果不利用这些已存在的类,我们的编程工作将变得异常复杂并且效率低下.所以我们应尽可能多的掌握Java基本类库的 ...

  5. c#类和结构体的关系

    原文地址:http://www.dnbcw.com/biancheng/c/fvhc81798.html 简介:这是c#类和结构体的关系的详细页面,介绍了和c/c++,有关的知识,谢谢大家的观看!要查 ...

  6. WustOJ 1575 Gingers and Mints(快速幂 + dfs )

    1575: Gingers and Mints Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lldSubmitted: 24 ...

  7. MergeSort 归并排序

    实现: 二路归并 public class TestMergeSort { public int[] mergeSortArray(int[] arr, int left, int right){ i ...

  8. hdu 2817 A sequence of numbers(快速幂)

    Problem Description Xinlv wrote some sequences on the paper a long time ago, they might be arithmeti ...

  9. Unity 3D 动画帧事件

    前几天在项目开发中碰到一个这样的需求,RPG游戏中,特效和动画播放不同步的.假如主角在攻击NPC时,先实例化特效,后播放动画.动画毕竟是有一个时间长度的.等到动画播放攻击挥刀的那一瞬间时,特效可能早就 ...

  10. 理解JavaScript 的原型属性

    1.原型继承 面向对象编程可以通过很多途径实现.其他的语言,比如 Java,使用基于类的模型实现: 类及对象实例区别对待.但在 JavaScript 中没有类的概念,取而代之的是一切皆对象.JavaS ...