最近一直在学习log4net,有一些心得体会,把它记下来,与大家分享一下。
准备工作就不多说了吧,下载地址:http://logging.apache.org/log4net/,
SDK地址:http://logging.apache.org/log4net/release/sdk/index.html。
1.0 有了log4net.dll后,先把它复制到项目文件的bin/Debug下,当然也可以放到其它地方,自己随意。
然后就是修改配置使用程序集级别的特性的文件了(AssemblyInfo.cs),无论BS还是CS程序都可直接在项目的AssemblyInfo.cs文件里添加以下的语句:
[assembly: log4net.Config .XmlConfigurator()]
或者:[assembly:log4net.Config.XmlConfigurator(ConfigFile="",ConfigFileExtension="",Watch=true)]
{注释:
其中在root里面定义关联,否则该项日志不会有效。logger里面定义日志名称和输出级别,appender里面定义日志文件名称和路径,
layout里面定义输出样式,filter里面定义一些过滤条件。
ConfigFile 如果指定,XmlConfigurator将使用该配置文件,文件的路径是相对应用项目的根目录(AppDomain.CurrentDomain.BaseDirectory),也可以是绝对路径。该属性不能与“ConfigFileExtension”属性一起使用。
ConfigFileExtension 如果指定,将对配置文件进行扩展。程序集的名字将追加到扩展文件名里,作为基本的名字。例如,如果程序集是从TestApp.exe文件中加载,并且log4net设置了ConfigFileExtension属性,则配置文件的名字是“TestApp.exe.log4net”,这相当于给TestApp.exe.log4net设置了ConfigFile属性。
配置文件将编译输出到项目根目录(AppDomain.CurrentDomain.BaseDirectory),程序集名和配置文件扩展名就是该配置的名字。
这个属性不能与ConfigFile属性一起使用。
Watch 如果指定并设置为“True”,那么框架将监视配置文件,每次配置修改将重新加载。
如果既没有指定ConfigFile, 也没有指定ConfigFileExtension,项目默认配置文件(例如:TestApp.exe.config)将作为log4net的配置文件。}
2.0 然后就是修改自己的配置文件App.config了。
2.1 引入log4net
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
2.2 下面就是详细配置log4net了
<log4net>
<root>
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="LogAllToFile" />
<appender-ref ref="AdoNetAppender" />
</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] "/>
<param name="Footer" value="[Footer] "/>
<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>
</log4net>
3.0 最后就是在类中实例化该日志,在方法中给各个级别的日志添加上相应的日志内容,用于输出到控制台、保存到日志文件或数据库中。
//获取三个日志记录器。
private static log4net.ILog oldLog = LogManager.GetLogger("testApp.Logging");
private static log4net.ILog logger = LogManager.GetLogger(typeof(Program));
private static readonly log4net.ILog logs = log4net.LogManager.GetLogger (System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
//由高到底的顺序,即OFF>Fatal>Error>Warn>Info>Debug>All 在root中定义的等级越高,显示的日志越少!
//写入日志
logs.Error("Error Acc logs");
logs.Warn("Warn Acc logs");
logs.Info("Info Acc logs");
logs.Debug("Debug Acc logs");
logger.Error("Error Acc logger");
logger.Warn("Warn Acc logger");
logger.Info("Info Acc logger");
logger.Debug("Debug Acc logger");
oldLog.Error("Error Acc oldLog");
oldLog.Warn("Warn Acc oldLog");
oldLog.Info("Info Acc oldLog");
oldLog.Debug("Debug Acc oldLog");