Log4Net使用心得

一、Log4Net是什么?

Log4Net是Log4的孪生姐妹,是Apache开源的应用于.Net框架的日志记录工具。它功能强大,可配置性灵活,线程安全,对日志的输出管理和级别管理方便。官方网站:http://logging.apache.org/log4net/ 你可以从官方网站下载源代码。根据自己的需要,甚至可以在源代码的基础上,扩展功能。

二、Log4Net组件介绍

Log4Net有以下几个组件:

Logger(记录器)

如果你用log4net,就一定会用到这个组件。它主要来记录日志信息的,但它记录的日志信息不会直接输出到目标地点,需要经过Layout格式化之后输出。

logger可以通过多种方式记录日志信息,你在应用程序中也可以根据自己的需要建立多个Logger,每个被实例化的Logger实例对象都被log4net框架作为命名实体 (named entity) 进行维护,有点类似单例模式中的对象一样,每一次在调用的时候,它都会先自动检测是否存在该实体,如果不存在,创建之,如果已经存在,直接调用。

一般创建方式是:log4net.ILog log = log4net.LogManager.GetLogger("logger-name");为了方便起见,一般以类(class)的名称(type)为logger-name,方便在出错时,比较容易查询出来。 可以用typeof(Classname)方法来获得类名,也可以通过反射获得:System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,后者包含命名空间。

Log4Net中,级别:DEBUG < INFO < WRAN < ERROR < FATAL

Repository(库)

Repository主要用于负责日志对象组织结构的维护。如果你是log4net的使用者,不是开发者,则基本上用不到。

Appender(附着器)

一个好的日志组件一定是可以支持输出到多种目的地的。比如可以输出到数据库中,可以输出到日志文件中,可以给指定邮箱发送Email,甚至给指定的手机号发短消息。log4net能够满足你大部分的要求,Appender组件主要来定义输出介质,这些组件把它们附加到Logger日志组件上,并将它们输出传递到输出流中。log4net提供的Appender有很多种,支持各种各样的Append,详细可以看log4net源码。

Appender Filters(过滤器)

Appender的过滤器(Appender Filters) 可以按照不同的标准过滤日志事件。在log4net.Filter的名字空间下已经有几个预定义的过滤器。使用这些过滤器,你可以按照日志级别范围过滤日志事件,或者按照某个特殊的字符串进行过滤。 

Layout(布局)

Layout用于格式化日志信息,最终显示给客户,输出信息可以以多种格式显示,主要依赖于我们我们采用的Layout组件类型。Layout组件与Appender组件一起使用,一个Appender组件,只对应一个layout,你可以通过实现ILayout接口,创建自己的layout组件。

三、Log4Net简单例子

在Web.Config的configSections结点中,添加log4net的section。

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

然后在Configuration结点的根目录下添加log4net的配置信息

 
  
< log4net debug ="false" >
< appender name ="LogFileAppender" type ="log4net.Appender.FileAppender" >
< param name ="File" value ="YYYY-MM-dd.log.txt" />
< param name ="datePattern" value ="MM-dd HH:mm" />
< param name ="AppendToFile" value ="true" />
< layout type ="log4net.Layout.PatternLayout" >
< param name ="ConversionPattern" value ="%d [%t] %-5p %c [%x] - %m%n" />
</ layout >
</ appender >
< appender name ="HttpTraceAppender" type ="log4net.Appender.ASPNetTraceAppender" >
< layout type ="log4net.Layout.PatternLayout" >
< param name ="ConversionPattern" value ="%d [%t] %-5p %c [%x] - %m%n" />
</ layout >
</ appender >
< appender name ="EventLogAppender" type ="log4net.Appender.EventLogAppender" >
< layout type ="log4net.Layout.PatternLayout" >
< param name ="ConversionPattern" value ="%d [%t] %-5p %c [%x] - %m%n" />
</ layout >
</ appender >
< appender name ="RollingLogFileAppender" type ="log4net.Appender.RollingFileAppender" >
< param name ="File" value ="Log/" />
< param name ="DatePattern" value ="yyyy-MM-dd.'txt'" />
< param name ="AppendToFile" value ="true" />
< param name ="RollingStyle" value ="Date" />
< param name ="StaticLogFileName" value ="false" />
< layout type ="log4net.Layout.PatternLayout" >
< param name ="ConversionPattern" value ="%d [%t] %-5p %c [%x] - %m%n" />
</ layout >
</ appender >
< root >
< level value ="INFO" />
< appender-ref ref ="RollingLogFileAppender" />
</ root >
</ log4net >

在Global.asax文件中的Application_Start中添加读取log4net的配置信息:

 
  
  protected void Application_Start( object sender, EventArgs e)
  {
  log4net.Config.DOMConfigurator.Configure();
  }

然后就可以在程序中直接使用了,例如

 
  
ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

log.Error(
" Error信息 " );
log.Debug(
" Debug信息 " );

转载于:https://www.cnblogs.com/wildweeds/archive/2010/07/16/log4net.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值