幾乎所有的大型應用都會有自己的用於跟蹤調試的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