因为看到公司项目有用到过这个来写日志,所以自己试着来配置和写了下日志。废话不多说,看下面说明配置和使用log4net的步骤:
1.下载log4net.dll,地址是:http://logging.apache.org/log4net/ 个人建议下载源码版,如果写不了日志可以调试。
2引入dll到项目中。
3配置log4net,有两种方式:使用web.config或者新建一个**.config配置文件来配置。下面我的是用新建一个配置文件来配置的,配置文件和说明如下
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net debug="true">
<root>
<appender-ref ref="LogFileAppenderByDate" />
</root>
<!--<logger name="mylogger">
<level value="DEBUG"/>
--><!--对应你所配置的appender的name,可以配置多个logger和多个appender相对应 ,root和looger节点必须有一个存在,对应响应的appender的name值--><!--
<appender-ref ref="LogFileAppenderByDate" />
</logger>-->
<!--按日期分割日志文件 一天一个 RollingFileAppender表示可以写多文件-->
<appender name="LogFileAppenderByDate" type="log4net.Appender.RollingFileAppender" >
<!--是否续写-->
<param name="AppendToFile" value="true" />
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
<!--保存路径-->
<param name="File" value="D:\log\" />
<!--文件名格式-->
<param name="DatePattern" value="yyyyMMdd" />
<!--StaticLogFileName为true时不能动态创建新文件,而且File那个配置节点要指定日志文件名-->
<param name="StaticLogFileName" value="false" />
<!--创建新文件的方式 按日期-->
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
</layout>
</appender>
</log4net>
</configuration>
4.配置完之后,要让程序找得到你的配置文件,所以在properties下的Assembly.cs加入以下代码:
//指定log4net的配置文件 ConfigFile 是你的log4net配置文件的绝对路径
[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"D:\Test\TestJST\log4net.config", Watch = true)]
5.使用:
//如果只定义了root而没定义looger节点的话,使用下面这种方式获取记录器
ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
//定了looger节点的话,可以用这种(mylogger对应你配置的logger节点的name值):
ILog log = LogManager.GetLogger("mylogger");
然后写日志就行了:
log.Debug("日志消息");
最后日志效果:
时间:2014-08-28 13:43:52,161
级别:DEBUG
类名:mylogger
文件:d:\Test\TestJST\CallWebService.aspx.cs 第32行
日志内容:尝试除以零。
-----------------------------------------
ps:一开始一直写不成功日志,吃亏在logger节点的<appender-ref ref="LogFileAppenderByDate" />配置,这里面的ref要对应<appender name="LogFileAppenderByDate" type="log4net.Appender.RollingFileAppender" >。否则在调试源码的时候会说找不到对应的appender,哎,自己粗心大意。