Log4net配置

一、定义配置文件
可以使用两种方式写配置文件

1、在程序的配置文件里,如AssemblyName.config 或web.config.
需要添加

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/>
  </configSections>

2、在你自己的文件里。文件名可以是任何你想要的名字,如Log4Net.xml等.

 <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]\r\n"/>
            <param name="Footer" value="[Footer]\r\n"/>
            <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>

二、配置文件详解

1、log4net
所有的配置都要在log4net元素里定义。

1)支持的属性:
debug:可选,取值是true或false,默认是false。设置为true,开启log4net的内部调试。
update:可选,取值是Merge(合并)或Overwrite(覆盖),默认值是Merge。设置为Overwrite,在提交配置的时候会重置已经配置过的库。
threshold:可选,取值是repository(库)中注册的level,默认值是ALL。

2)支持的子元素:
appender:0或多个
logger:0或多个
renderer:0或多个
param:0或多个
root:最多一个

2、root
实际上就是一个根logger,所有其它logger都默认继承它,如果配置文件里没有显式定义,则框架使用根日志中定义的属性。root元素没有属性。

支持的子元素:
appender-ref:0个或多个,要引用的appender的名字。
level:最多一个。 只有在这个级别或之上的事件才会被记录。
param:0个或多个, 设置一些参数。

3、logger

在配置文件appender中的配置好了输出的介质,格式,过滤方式,还要定义日志对象logger。

在框架的体系里,所有的日志对象都是根日志(root logger)的后代。 因此如果一个日志对象没有在配置文件里显式定义,则框架使用根日志中定义的属性。在root标签里,可以定义level级别值和Appender的列表。如果没有定义LEVEL的值,则缺省为DEBUG。可以通过appender-ref标签定义日志对象使用的Appender对象。appender-ref声明了在其他地方定义的Appender对象的一个引用。在一个logger对象中的设置会覆盖根日志的设置。而对Appender属性来说,子日志对象则会继承父日志对象的Appender列表。这种缺省的行为方式也可以通过显式地设定logger标签的additivity属性为false而改变。

root不显式申明时使用默认的配置。我觉得在使用时不定义root,自定义多个logger,在程序中记录日志时直接使用logger的name来查找相应的logger,这样更灵活一些。

例如:

<!--同时写两个文件和数据库-->
<logger name="ReflectionLayout">
    <level value="DEBUG"/>
    <appender-ref ref="HashtableLayout"/>
    <appender-ref ref="ReflectionLayout"/>
    <appender-ref ref="ADONetAppender"/>
</logger>
1)支持的属性:
name:必须的,logger的名称
additivity:可选,取值是true或false,默认值是true。设置为false时将阻止父logger中的appender。
2)支持的子元素:
appender-ref:0个或多个,要引用的appender的名字。
level:最多一个。 只有在这个级别或之上的事件才会被记录。
param:0个或多个, 设置一些参数。

4、appender
定义日志的输出方式,只能作为 log4net 的子元素。name属性必须唯一,type属性必须指定。

1)支持的属性:
name:必须的,Appender对象的名称
type:必须的,Appender对象的输出类型

2)支持的子元素:
appender-ref:0个或多个,允许此appender引用其他appender,并不是所以appender类型都支持。
filter:0个或多个,定义此app使用的过滤器。
layout:最多一个。定义appender使用的输出格式。
param:0个或多个, 设置Appender类中对应的属性的值。

实际上所能包含的子元素远不止上面4个。


5、layout
布局,只能作为appender的子元素。

1)支持的属性:
type:必须的,Layout的类型
param:0个或多个, 设置一些参数。

6、filter
过滤器,只能作为appender的子元素。

1)支持的属性:
type:必须的,Filter的类型
2)支持的子元素:
param:0个或多个, 设置一些参数。

7、param
param元素可以是任何元素的子元素。

1)支持的属性:
name:必须的,取值是父对象的参数名。
value:可选的,value和type中,必须有一个属性被指定。value是一个能被转化为参数值的字符串。
type:可选的,value和type中,必须有一个属性被指定。type是一个类型名,如果type不是在log4net程序集中定义的,就需要使用全名。
2)支持的子元素:
param:0个或多个, 设置一些参数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值