log4net(Log For Net)是Apache开源的应用于.Net框架的日志记录工具,详细信息参见Apache网站.它是针对Java的log4j(Log For Java的)姊妹工具.用过log4j的都知道,它功能强大,可配置性灵活,线程安全,对日志的输出管理和级别管理方便。具体的使用方法往下看。
首先你应该下载log4net.dll并引入到你的项目References中,或者把源代码项目作为你工程的一部分加入到你的工程当中。单击这里下载Log4net 。
使用log4net需要知道其中两个比较重要的概念:logger 和 appender。前者是日志记录对象,后者是日志记录的目标,包括控制台,文件,定量大小的文件,远程广播。也就是说我们使用log4net的过程可以是这样的:获得一个用来记录日志的工具对象logger,然后为logger对象指定日志的记录位置.美妙的是,这一切工作都可以在Web.config配置文件中完成,所用的代码极少.
其配置如下:
先在web.config中的<configuration>节点下添加如下配置:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
用过web.config自定义节点的朋友都知道,还应该配置log4net节点,接下来在<configuration>节点下添加如下log4net节点配置:
1<log4net debug="false">
2 <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
3 <param name="File" value="c:/Applog.txt" />
4 <param name="datePattern" value="yyyy-MM-dd HH:mm" />
5 <param name="AppendToFile" value="true" />
6 <layout type="log4net.Layout.PatternLayout">
7 <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
8 </layout>
9 </appender>
10 <appender name="HttpTraceAppender" type="log4net.Appender.ASPNetTraceAppender" >
11 <layout type="log4net.Layout.PatternLayout">
12 <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
13 </layout>
14 </appender>
15 <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
16 <layout type="log4net.Layout.PatternLayout">
17 <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
18 </layout>
19 </appender>
20 <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
21 <param name="File" value="C:/Log.txt" />
22 <param name="AppendToFile" value="true" />
23 <param name="MaxSizeRollBackups" value="10" />
24 <param name="MaximumFileSize" value="5MB" />
25 <param name="RollingStyle" value="Size" />
26 <param name="StaticLogFileName" value="true" />
27 <layout type="log4net.Layout.PatternLayout">
28 <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
29 </layout>
30 </appender>
31 <root>
32 <level value="DEBUG" />
33 <appender-ref ref="LogFileAppender" />
34 </root>
35</log4net>
<param name="ConversionPattern" value="当前时间:%d |当前线程:[%t] | 当前日志的优先级别: %-5p | 当前日志对象名称:%c [%x] |日志消息: %m | 执行时间: [%r] %n" />
<!--輸出文件格式説明:
%d 输出当前语句运行的时刻
%t 当前语句所在的线程
%-数字:表示该项的最小长度,如果不够,则用空格填充
%p 日志的当前优先级别,即DEBUG、INFO<、WARN…等
%m 输出的日志消息,如ILog.Debug(…)>输出的一条消息
%n 换行
%r 運行的時間
%c 当前日志对象的名称
-->
从上面的配置中可以看到定义了多个appender,每一个appender就是一个日志记录的目标。root节点指定了选用哪一个 appender. 在这里我选用了LogFileAppender。
到这里配置就基本上完成了,但是怎么使用上面的配置呢?log4net为我们提供了在应用程序启动时加载配置信息的入口,很简单,在Global.asax.cs的Application_Start过程中添加如下代码:
log4net.Config.DOMConfigurator.Configure();
好了,到此为止整个配置过程完成了,下面是怎么调用的问题了。
using log4net;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
log4net.ILog logger = log4net.LogManager.GetLogger(this.GetType());
logger.Info("程序已经启动");
logger.Error("程序没有错误");
logger.Debug("程序开始调试");
}
}
在C:/下面会生成一个Applog.txt文本文件,打开看看,里面就有你写入的日志。
log4net.Layout.PatternLayout中的转换模式(ConversionPattern) 如下:
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(new line):换行
%d(datetime):输出当前语句运行的时刻
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread id):当前语句所在的线程ID
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):当前日志对象的名称,例如:
模式字符串为:%-10c -%m%n
代码为:
ILog log=LogManager.GetLogger(“Exam.Log”);
log.Debug(“Hello”);
则输出为下面的形式:
Exam.Log - Hello
%L:输出语句所在的行号
%F:输出语句所在的文件名
%-数字:表示该项的最小长度,如果不够,则用空格填充
例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:
176 [main] INFO org.foo.Bar - Located nearest gas station.