使用log4net前要先做一些配置的工作。配置工作可以在配置文件中完成也可以在程序中用代码完成。我们主要讲在配置文件中如何配置log4net,因为这样更方便灵活,而且还不用重新编译代码。
(一)配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler" />
</configSections>
<log4net>
<root>
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
<logger name="testApp.Logging">
<level value="DEBUG"/>
</logger>
<appender name="LogFileAppender"
type="log4net.Appender.FileAppender" >
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header] "/>
<param name="Footer" value="[Footer] "/>
<param name="ConversionPattern"
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<appender name="ConsoleAppender"
type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern"
value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
</configuration>
log4net的配置可以放在应用程序的默认配置文件中(app.config或web.config),也可以再你自己的配置文件中。(如果log4net的配置不是放在应用程序的配置文件里,而是在自己定义的文件里,<configSection>节点里的<section>节点是不需要的。)
(二)节点分析
在配置章节中,定义section节点。节点名称为:须为log4net,且大小写敏感。
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler" />
</configSections>
(三)Log4net章节内容
debug 可选,取值是true或false,默认是false。设置为true,开启log4net的内部调试。
update 可选,取值是Merge(合并)或Overwrite(覆盖),默认值是Merge。设置为Overwrite,在提交配置的时候会重置已经配置过的库。
threshold 可选,取值是repository(库)中注册的level,默认值是ALL。
支持的子元素:
·appender 0或多个
·logger 0或多个
·renderer 0或多个
·root 最多一个
·param 0或多个
(四)两个Appenders(输出源)
定义日志的输出方式,只能作为 log4net 的子元素。name属性必须唯一,type属性必须指定
支持的属性:
name 必须的,Appender对象的名称
type 必须的,Appender对象的输出类型
支持的子元素:
·appender-ref 0个或多个,允许此appender引用其他appender,并不是所以appender类型都支持。
·filter 0个或多个,定义此app使用的过滤器。
·layout 最多一个。定义appender使用的输出格式。
·param 0个或多个, 设置Appender类中对应的属性的值。
·LogFileAppender
节点日志文件输出。type="log4net.Appender.FileAppender"
·ConsoleAppender
节点控制台输出。type="log4net.Appender.ConsoleAppender"
(五)一个root
根logger,所有其它logger都默认继承它。root元素没有属性。
支持的子元素:
·appender-ref 0个或多个,要引用的appender的名字。
·level 最多一个。 只有在这个级别或之上的事件才会被记录。
·param 0个或多个, 设置一些参数。
<root>
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
(六)Logger
支持的属性:
name 必须的,logger的名称
additivity 可选,取值是true或false,默认值是true。设置为false时将阻止父logger中的appender。
支持的子元素:
·appender-ref 0个或多个,要引用的appender的名字。
·level 最多一个。 只有在这个级别或之上的事件才会被记录。
·param 0个或多个, 设置一些参数。
<logger name="testApp.Logging">
<level value="DEBUG"/>
</logger>
(七)Layout
布局,只能作为<appender>的子元素。
支持的属性:
type 必须的,Layout的类型
支持的子元素:param 0个或多个, 设置一些参数。
(八)Filter
过滤器,只能作为<appender>的子元素。
支持的属性:
type 必须的,Filter的类型
支持的子元素:param 0个或多个, 设置一些参数。
(九)Param
<param>元素可以是如何元素的子元素。
支持的属性:
name 必须的,取值是父对象的参数名。
value 可选的,value和type中,必须有一个属性被指定。value是一个能被转化为参数值的字符串。
type 可选的,value和type中,必须有一个属性被指定。type是一个类型名,如果type不是在log4net程序集中定义的,就需要使用全名。
支持的子元素:param 0个或多个, 设置一些参数。
附:log4net的xsd schema文件。
http://www.cnblogs.com/didasoft/archive/2007/07/23/log4net_xsd.html(用的时候,请感谢一下作者)
这个版本已经旧了。再提供一个新版本
log4net新版本 请保留文件中的版本信息。
再补充一下:此版本与log4net最新版1.2.10还不能完全兼容。现已经发现一点:
对mssql数据库写日志时,connectionType 值 请使用
官网提供的:
System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
自己可以修改一下xsd。
如果谁有完全适应的版本请提供一下。
更多内容请参考:http://blog.csdn.net/lyjcn/archive/2009/08/11/4432833.aspx(非常感谢作者。)
布局附表
布局
Class |
Description |
ExceptionLayout |
只呈现日志事件中异常的文本信息 |
Layout2RawLayoutAdapter |
适应于Ilayout接口到IRawLayout |
LayoutSkeleton |
扩展这个抽象类来创建自定义的布局格式 |
PatternLayout |
可以通过类型字符串来配置的布局 |
PatternLayout.ConverterInfo |
把转换器名字映射为转换器类型的包装类 |
RawLayoutConverter |
IrawLayout接口的类型转换器 |
RawPropertyLayout |
从日志事件中提取属性值 |
RawTimeStampLayout |
从日志事件中提取日期 |
RawUtcTimeStampLayout |
从日志事件中提取日期 |
SimpleLayout |
很简单的布局 |
XmlLayout |
把日志事件格式化为XML元素的布局 |
XmlLayoutBase |
把日志事件格式化为XML元素的布局 |
XmlLayoutSchemalLog4j |
把日志事件格式化为与log4j结构兼容的XML元素布局 |