asp.net 使用Log4net

摘自:http://dong.hongjun888.blog.163.com/blog/static/2081208420104275496117/

一、在asp.net中使用log4net

1、添加log4net.dll引用

2、编辑配置文件,有两种做法:放在web.config里或放在单独的文件里,我们一般放在单独的文件里,这样做的好处--修改log4net的配置不会影响到整个应用重启

3、在Global.asax的Application_Start里加入如下代码

log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("~")+@"\log4net.xml"));

log4net.xml为log4net的配置文件,"\log4net.xml"为配置文件相对于站点的路径

4、创建日志对象,一般定义为一个类的私有静态字段

private static readonly ILog log = LogManager.GetLogger(typeof(类名).Name);

5、写日志

if (log.IsDebugEnabled)
{
    log.Debug("日志信息");
}

 

二、在分层构架中使用log4net

     一般asp.net项目都会使用分层构架,如何在web以外的其它层使用log4net呢,比如DAL层,还要写相应的配置文件吗?

     答案是否定的,在其它层中只要完成上面的1、4、5就行了,不需要再单独进行配置,它会自动沿用web层里的配置信息

 

三、如何防止自定义的logger和root重复写入日志

    logger是从root继承而来,默认的用logger写的日志会被root重复写一份,如何防止这种情况呢,网上有人提出可以去掉root里的 appender-ref,这不是一个好的解决方法,logger只是为了单独处理一些日志,大部分的日志还是要依靠root来完成。

    其实log4net提供了一种很好的解决方式,断开logger与root的继承关系,只要在配置文件里的logger加上属性additivity="false"就可以了。

四、按日期生成日志问题

    只需要RollingFileAppender 就可以了,配置信息如下:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
        
<param name="File" value="Log"/> 
        
<param name="AppendToFile" value="true"/> 
        
<param name="StaticLogFileName" value="false"/> 
        
<param name="DatePattern" value="yyyyMMdd&quot;.log&quot;"/> 
        
<param name="RollingStyle" value="Date"/> 
        
<layout type="log4net.Layout.PatternLayout"> 
            
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n%n"/> 
        
</layout> 
</appender> 

 

posted @ 2012-08-28 18:49  only_copy  阅读(240)  评论(0编辑  收藏  举报