[轉]Log4Net中配置文件的解釋

FROM:http://www.cnblogs.com/kissazi2/p/3392605.htmljavascript

一個完整的配置文件的例子以下所示html

複製代碼
<log4net> <!-- 錯誤日誌類--> <logger name="logerror"> <level value="ALL" /> <appender-ref ref="ErrorAppender" /> </logger> <!-- 信息日誌類 --> <logger name="loginfo"> <level value="ALL" /> <appender-ref ref="InfoAppender" /> </logger> <!-- 錯誤日誌附加介質--> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\LogError\\" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="100" /> <param name="MaxFileSize" value="10240" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" /> <param name="RollingStyle" value="Date" /> <!--佈局--> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n異常時間:%d [%t] &lt;BR&gt;%n異常級別:%-5p &lt;BR&gt;%n異 常 類:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" /> </layout> </appender> <!-- 信息日誌附加介質--> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\LogInfo\\" /> <param name="AppendToFile" value="true" /> <param name="MaxFileSize" value="10240" /> <param name="MaxSizeRollBackups" value="100" /> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" /> <param name="RollingStyle" value="Date" /> <!-- 信息日誌佈局--> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日誌時間:%d [%t] &lt;BR&gt;%n日誌級別:%-5p &lt;BR&gt;%n日 志 類:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" /> </layout> </appender> </log4net>
複製代碼

先不分析上面這段配置信息是什麼意思。咱們先來回想一下咱們的日誌類一般用來作什麼,假設咱們有一個庫存管理系統,分爲兩大模塊,一個是出庫,一個是入庫。咱們可能想要出庫的相關信息保存在某一個文件夾裏面,入庫的信息存在另外一個文件夾裏面。這樣,咱們一般的作法是用在日誌類中不一樣的路徑將日誌寫到不一樣位置,可是若是咱們不僅僅想要寫到日誌文件中,並且想要將這些日誌文件插入數據庫呢?通常來說,咱們會再創建一些方法,來寫到數據庫。另外,正常日誌信息和錯誤日誌信息的佈局,咱們可能想要根據日誌類型的不一樣,改變信息的佈局,好比錯誤日誌裏面有異常信息的記錄,正常日誌裏面就沒有異常的記錄。java

      總結地說,咱們的日誌類的需求一般就是:一、可以按要求將日誌寫到不一樣的介質上(文件、數據庫、郵件等);二、可以根據日誌類型的不一樣,寫到不一樣的位置;三、能根據信息的類型,改變日誌的佈局。數據庫

      不得不說,想要寫好一個日誌記錄類仍是挺不容易的的,看是簡單的需求要作好,也是須要下大工夫的。而這些在Log4Net中,只須要通過一些配置,就能夠完成。若是你懶得寫配置信息,也能夠直接將上面的配置信息拷過去用。apache

配置文件中節點的解釋

logger是負責日誌的記錄者,假設咱們須要記錄一些正常的運行時日誌和出現異常時的錯誤日誌,那麼咱們能夠經過在配置文件當中添加兩個Logger實現。 appender提供記錄的介質,前面談到,咱們可能要同時將數據記錄到文件和數據庫中,咱們能夠簡單地經過編寫appender實現,並且Log4Net當中已經默認提供了一些經常使用的appender,咱們能夠簡單地修改一些配置文件就實現同時向數據庫和同時向文件中寫入的功能。app

layout負責把記入的內容格式化。其實就是決定日誌文件要長什麼樣子。佈局

Logger節點的解釋

錯誤日誌類爲例進行解釋this

<!-- 錯誤日誌類--> <logger name="logerror"> <!-- 日誌類的名字--> <level value="ALL" /> <!-- 定義記錄的日誌級別--> <appender-ref ref="ErrorAppender" /><!-- 記錄到什麼介質中--> </logger>

level定義記錄的日誌級別,就是說,你要記錄哪一個級別以上的日誌,級別由高往低依次是:spa

None
Fatal
ERROR
WARN
DEBUG
INFO
ALL

級別的定義要注意,若是你定義DEBUG,那麼低於DEBUG級別如下的信息,將不會記入日誌,啥意思呢?就是說,就算你在程序裏,用log.info()來寫入一個日誌信息,但是你在配置中指定level爲DEBUG,因爲INFO級別低於DEBUG,因此,不會被記入日誌.這樣的處理很是靈活線程

appender-ref定義日誌要寫入到什麼介質中中。上面例子中就是寫入到ErrorAppender這個介質中,在ErrorAppender節點咱們能夠定義跟日誌有關的要寫入到什麼地方,日誌文件的格式是什麼等信息。

appender節點的解釋

ErrorAppender爲例

複製代碼
<!-- 錯誤日誌附加介質--> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <!-- name屬性指定其名稱,type則是log4net.Appender命名空間的一個類的名稱,意思是,指定使用哪一種介質--> <param name="File" value="Log\\LogError\\" /> <!-- 輸出到什麼目錄--> <param name="AppendToFile" value="true" /><!-- 是否覆寫到文件中--> <param name="MaxSizeRollBackups" value="100" /><!-- 備份文件的個數--> <param name="MaxFileSize" value="10MB" /><!-- 單個日誌文件最大的大小--> <param name="StaticLogFileName" value="false" /><!-- 是否使用靜態文件名--> <param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" /><!-- 日誌文件名--> <param name="RollingStyle" value="Date" /> <!--佈局--> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n異常時間:%d [%t] &lt;BR&gt;%n異常級別:%-5p &lt;BR&gt;%n異 常 類:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" /> </layout> </appender>
複製代碼

appender節點中,type=RollingFileAppender 的意思是將日誌以回滾文件的形式寫到文件中。

File節點中規定了文件要寫入到什麼目錄中,上例中的「Log\\LogError\\」表明寫入到「程序輸入目錄(Debug目錄)\Log\LogError\」文件夾中。

AppendToFile節點規定了是否覆寫到文件中。假設咱們已經有了一個20131028.htm日誌文件,當爲true的時候,日誌文件會附加到這個文件上。爲false的時候,Log4Net會先將原來的日誌文件備份,生成一個新的日誌文件(見下圖)。

image

MaxFileSize 最大的文件大小。咱們可使用"KB", "MB" 或 "GB"爲 MaxFileSize 做爲後綴限定大小。默認的文件大小是10MB。

RollingStyle是文件建立的方式。上例中市設置爲以Date方式建立新文件。

DatePattern 日期格式,當咱們設置了RollingStyle 爲Date方式後,Log4Net會自動使用DatePattern 中的日期格式來建立新的日誌文件。

MaxSizeRollBackups這個屬性用來設置,當日志文件達到MaxFileSize大小,就自動建立備份文件。備份文件的多少由MaxSizeRollBackups決定。好比說,咱們是以日期格式做爲日誌文件名的,假設今天是2013-10-28,那麼今天建立的日誌文件名就是20131028.htm,當這個文件中要超過MaxFileSize的時候,Log4Net就自動將老的20131028.htm更名爲20131028.htm.1,並建立一個新的20131028.htm文件。

StaticLogFileName 是否採用靜態文件名。由於咱們這個例子是採用以日期做爲文件名,天天的日誌文件的名字都是動態的,因此上例中爲false。若是採用靜態文件名,那麼日誌文件的名字就是惟一肯定的。能夠參考下面的配置文件進行設置。下面的配置文件中就是採用靜態文件名,生成的日誌文件名都是log.txt。

複製代碼
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="log.txt" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="100KB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender>
複製代碼

layout就是佈局。Layout中的ConversionPattern就是日誌文件的格式,一些符號的介紹附加在下面。因爲格式化的方式比較多,除了下面介紹的,你們也能夠本身看看官方文檔

%m[%message] 輸出的日誌消息
%n 換行
%d[%datetime] 輸出當前語句運行的時刻
%r 輸出程序從運行到執行到當前語句時消耗的毫秒數
%d 當前語句所在的線程ID
%p 日誌的當前優先級別
%c 當前日誌對象的名稱
%L 輸出語句所在的行號
%F 輸出語句所在的文件名
%-數字 表示該項的最小長度,若是不夠,則用空格
相關文章
相關標籤/搜索