.NET中使用log4net
一,加载log4net引用
下载log4net.dll,我们这里使用的是.NET2.0
下载地址:https://files.cnblogs.com/gosky/log4net-1.2.13-bin-newkey.zip
解压以后将 /bin/net/2.0/release/log4net.dll 复制到项目的bin目录下。
二、配置log4net.config
1.在项目根目录下新建文件:log4net.config (注意一定要在根目录下),将下面的内容复制到文件中。
<?xml version="1.0" encoding="utf-8"?> <configuration> <log4net> <!--定义输出到文件中--> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> <!--定义文件存放位置--> <file value="D:/"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value=""logs_"yyyyMMdd".txt""/> <StaticLogFileName value="false"/> <layout type="log4net.Layout.PatternLayout"> <!--每条日志末尾的文字说明--> <footer value="by jzhfz "yyyyMMdd""/> <!--输出格式--> <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 执行类:%logger property:[%property{NDC}] - 描述:%message%newline"/> </layout> </appender> <!--定义输出到控制台命令行中--> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> </layout> </appender> <!--定义输出到windows事件中--> <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> </layout> </appender> <!--定义输出到数据库中,这里举例输出到Access数据库中,数据库为C盘的log4net.mdb--> <appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender"> <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb"/> <commandText value="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)"/> <!--定义各个参数--> <parameter> <parameterName value="@logDate"/> <dbType value="String"/> <size value="240"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date"/> </layout> </parameter> <parameter> <parameterName value="@thread"/> <dbType value="String"/> <size value="240"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread"/> </layout> </parameter> <parameter> <parameterName value="@logLevel"/> <dbType value="String"/> <size value="240"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level"/> </layout> </parameter> <parameter> <parameterName value="@logger"/> <dbType value="String"/> <size value="240"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger"/> </layout> </parameter> <parameter> <parameterName value="@message"/> <dbType value="String"/> <size value="240"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message"/> </layout> </parameter> </appender> <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。--> <root> <!--日志级别:ALL/DEBUG/INFO/WARN/ERROR/FATAL/OFF--> <level value="ALL"/> <!--文件形式记录日志--> <appender-ref ref="LogFileAppender"/> <!--控制台控制显示日志--> <appender-ref ref="ConsoleAppender"/> <!--Windows事件日志--> <appender-ref ref="EventLogAppender"/> <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉 <appender-ref ref="AdoNetAppender_Access" /> --> </root> </log4net> </configuration>
其中<file value="D:/"/>指定要存放的日志文件的路径。上面是以日期分割日志文件,每天一个日志。
2.如果要以大小分割日志文件,将appender节点内容换成下面的内容。
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> <!--定义文件存放位置--> <file value="D:/log.txt"/> <appendToFile value="true"/> <!--最大变换数量--> <maxSizeRollBackups value="3" /> <!--最大文件大小--> <maximumFileSize value="20KB" /> <rollingStyle value="Size"/> <datePattern value=""logs_"yyyyMMdd".txt""/> <StaticLogFileName value="true"/> <layout type="log4net.Layout.PatternLayout"> <!--每条日志末尾的文字说明--> <footer value="by jzhfz"/> <!--输出格式--> <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 执行类:%logger property:[%property{NDC}] - 描述:%message%newline"/> </layout> </appender>
于日期分割不同的是:<StaticLogFileName value="true"/>要设置为true,生成的日志文件为 log.txt.1 log.txt.2 log.txt.3
超出最大数量将自动覆盖最前面的文件。
三、设置项目使用log4net输出日志
1.在web.config中配置
<configSections> <!--使用log4net输出日志--> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections>
2.新增属性文件AssemblyInfo.cs,内容如下
using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // 有关程序集的常规信息通过以下 // 特性集控制。更改这些特性值可修改 // 与程序集关联的信息。 [assembly: log4net.Config.DOMConfigurator(ConfigFile = "log4net.config", Watch = false)]
到这里我们所有的配置工作已经完成。下面介绍如何使用log4net来记录日志。
四、log4net的使用
在需要使用的地方引入命名空间:
using log4net; using System.Reflection;
public ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); logger.Info(“正常的日志”); logger.Error("发生了一个异常"); logger.Fatal("发生了一个致命错误"); logger.Debug(“调试信息”); logger.Warn(“警告”);
如果想了解每个属性更详细的配置,可参考:http://blog.sina.com.cn/s/blog_6d1c583c01010tf3.html