几乎所有的大型应用都会有自己的用于跟踪调试的API。因为一旦程序被部署以后,就不太可能再利用专门的调试工具了。然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题。Log4net是一款非常著名的记录日志开源组件,基本的框架源于另外的一个Java领域非常著名的姐妹组件-log4j。Log4net记录日志的功能非常强大。它可以将日志分不同的等级,比不同的样式,将日志输出到不同的媒介。
现以一个实例说明Log4net的使用:
1, 下载Log4net组件:
http://logging.apache.org/log4net/download.html
http://archive.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip
http://logging.apache.org/log4net/download.html
http://archive.apache.org/dist/incubator/log4net/1.2.10/incubating-log4net-1.2.10.zip
2,解压出Log4net组件dll:
incubating-log4net-1.2.10.zip\log4net-1.2.10\bin\net\2.0\release:
log4net.xml
log4net.dll
log4net.xml
log4net.dll
3,将log4net.dll拷贝到.Net项目目录下的:bin/debug下;
4,将log4net.dll加到项目引用中,添加方法为:右键单击VS工具解决方案项目下的引用然后选择log4net.dll确定;
5,在bin/debug下建立log4net配置文件log4net.xml,文件内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0" />
</configSections>
<log4net>
<!-- 日志级别:
级别 允许的方法 Boolean属性 优先级别
OFF Highest
FATAL void Fatal(...); bool IsFatalEnabled;
RROR void Error(...); bool IsErrorEnabled;
WARN void Warn(...); bool IsWarnEnabled;
INFO void Info(...); bool IsInfoEnabled;
DEBUG void Debug(...); bool IsDebugEnabled;
ALL Lowest
-->
<root>
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
<logger name="com.suntom">
<level value="DEBUG"/>
</logger>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0" />
</configSections>
<log4net>
<!-- 日志级别:
级别 允许的方法 Boolean属性 优先级别
OFF Highest
FATAL void Fatal(...); bool IsFatalEnabled;
RROR void Error(...); bool IsErrorEnabled;
WARN void Warn(...); bool IsWarnEnabled;
INFO void Info(...); bool IsInfoEnabled;
DEBUG void Debug(...); bool IsDebugEnabled;
ALL Lowest
-->
<root>
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
<logger name="com.suntom">
<level value="DEBUG"/>
</logger>
<!-- 日志输出格式化:
%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:输出语句所在的文件名
%-数字:表示该项的最小长度,如果不够,则用空格填充
-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="./log.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n"/>
<param name="Footer" value="[Footer]\r\n"/>
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
</configuration>
%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:输出语句所在的文件名
%-数字:表示该项的最小长度,如果不够,则用空格填充
-->
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="./log.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n"/>
<param name="Footer" value="[Footer]\r\n"/>
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
</configuration>
6,在项目中配置Log4net,配置方法:在AssemblyInfo.cs(Web 项目为web.config)最下面添加:
[assembly: log4net.Config.XmlConfigurator(ConfigFile="./log4net.xml", ConfigFileExtension="xml", Watch=true)]
7,在项目中使用Log4net,如类:com.suntom.testClass:
log4net.ILog log = log4net.LogManager.GetLogger(this.GetType());
log4net.ILog log = log4net.LogManager.GetLogger(this.GetType());
log.Debug("Enter initMenus()");
8, 启动程序并运行到日志输出处,退出程序后就可以在 bin/debug下 看到日志文件:
log.txt:
[Header]\r\n2011-07-04 22:38:58,226 [10] DEBUG com.suntom.testClass - Enter initMenus()
[Footer]
[Footer]
9,在此,Log4net就可以使用了。
本文出自 “小何贝贝的技术空间” 博客,请务必保留此出处http://babyhe.blog.51cto.com/1104064/602748