前面一章、我們簡單的介紹了log4net的功能,以及一個記錄日誌到文檔的案例。
本節、將帶領大家詳細瞭解上節案例中各行代碼的意思。
<configuration> <configSections> <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> </configSections> <log4net> <root> <level value="ALL"/> <appender-ref ref="FileAppender"/> </root> <!--存儲到文件的操作--> <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\log.txt"/> <rollingStyle value="Date"/> <param name="AppendToFile" value="true"/> <!--<param name="DatePattern" value="yyyy-MM-dd".txt""/>--> <param name="DatePattern" value="log.txt"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date%n--- ThreadId=[%t] Level=%-5p Message=%m%n"/> </layout> </appender> </log4net> </configuration>
首先是配置log4net.config
<Configuration></Configuration>節點。這是config文件必須切只能包含一個的,用來包含所有的配置內容。
<configSections></configSections>節點。這是用來爲配置文件添加自定義節點的。它的內容<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>代表着想這個配置文件添加一個用戶自定義節點,節點的名稱爲log4net類型。IgnoreSectionHandler表示創建的節點類型。這個類型的簡單介紹爲:創建新的配置處理程序並將指定的配置對象添加到節處理程序集合中
<Root></Root>節點。這個節點是根日誌節點,其內容爲根日誌的配置,有level級別值和Appender的列表。所有的子用戶節點(<logger>)都是其後代,上節代碼中沒有使用<logger>節點。它的內容<level value="ALL"/><appender-ref ref="FileAppender"/>代表着根節點日誌記錄的日誌等級是記錄所有等級的日誌,<appender-ref>標籤定義日誌對象使用的Appender對象。<appender-ref>聲明瞭在其他地方定義的Appender對象的一個引用。
日誌的等級分爲以下幾種:ERROR、WARN、INFO、DEBUG,ALL
ERROR 爲嚴重錯誤 主要是程序的錯誤
WARN 爲一般警告,比如session丟失
INFO 爲一般要顯示的信息,比如登錄登出
DEBUG 爲程序的調試信息
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">則聲明瞭你的log4net日誌的保存方法等其他信息。上章的代碼中日誌的保存方法爲“寫日誌到文件”所有appender的type則是RollingFileAppender。
<Param>則是設置appender的屬性,如保存的文件名,記錄方式等,
<Layout>輸出日誌的格式化器,用於向用戶顯示最後經過格式化的輸出信息。輸出信息可以以多種格式顯示
格式名含義
%c輸出日誌信息所屬的類的全名
%d輸出日誌時間點的日期或時間,默認格式爲ISO8601,也可以在其後指定格式,比如:%d{yyy-MM-ddHH:mm:ss},輸出類似:2002-10-18-22:10:28
%f輸出日誌信息所屬的類的類名
%l輸出日誌事件的發生位置,即輸出日誌信息的語句處於它所在的類的第幾行
%m輸出代碼中指定的信息,如log(message)中的message
%n輸出一個回車換行符,Windows平臺爲“/r/n”,Unix平臺爲“/n”
%p輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL。如果是調用debug()輸出的,則爲DEBUG,依此類推
%r輸出自應用啓動到輸出該日誌信息所耗費的毫秒數
%t輸出產生該日誌事件的線程名
其次是引入log4net.config文件到你的項目中去
想將你的項目引入到log4net,你的將你剛剛配置的log4net.config文件引入到你的項目中來:
1、在項目中找到AssemblyInfo.cs文件,向文件的最後一行加入代碼:
[assembly: log4net.Config.DOMConfigurator(ConfigFile = "log4net.config", Watch = true)]
2、在項目的Application_Start()函數中加入代碼
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("log4net.config")));
最後在你的代碼中成功使用log4net記錄錯誤日誌
完成以上步驟之後,你就可以在你的代碼中聲明ILog的變量來記錄錯誤了,
ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); log.Error("變量不存在");
記錄不同的日誌等級可以用不同的函數如:log.Error(“變量不存在”),則會在你的日誌文件中生成一個等級爲error的錯誤,同樣log.Info()則會生成一個info日誌信息log.debug()也是如此。