使用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]&#13;&#10;"/>

        <param name="Footer" value="[Footer]&#13;&#10;"/>

        <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.configweb.config),也可以再你自己的配置文件中。(如果log4net的配置不是放在应用程序的配置文件里,而是在自己定义的文件里,<configSection>节点里的<section>节点是不需要的。)

(二)节点分析

在配置章节中,定义section节点。节点名称为:须为log4net,且大小写敏感。

<configSections>

    <section name="log4net"

             type="log4net.Config.Log4NetConfigurationSectionHandler" />

  </configSections>

 

(三)Log4net章节内容

debug 可选,取值是truefalse,默认是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 可选,取值是truefalse,默认值是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 可选的,valuetype中,必须有一个属性被指定。value是一个能被转化为参数值的字符串。

type 可选的,valuetype中,必须有一个属性被指定。type是一个类型名,如果type不是在log4net程序集中定义的,就需要使用全名。

支持的子元素:param 0个或多个, 设置一些参数。

 

附:log4netxsd 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元素布局

 

 

 

 

posted on 2009-12-10 11:05  梅桦  阅读(5183)  评论(0编辑  收藏  举报