[C#]Log4net中的RollingFileAppender解析

轉自:http://blog.csdn.net/much0726/archive/2009/01/07/3725563.aspx

 

Log4日誌組件的應用確實簡單實用,在比較了企業庫和Log4的日誌功能後,個人覺得Log4的功能更加強大點.補充說明下,我使用的企業庫是2.0版本,Log4net是1.2.1版本的.

在Log4net的應用上,已經有人做了說明分析了,在本文中,主要解析下Log4net中的RollingFileAppender的應用.

主要參考了Log4net的幫助文檔.在項目中的log4net-1.2.10/doc文件下有.


RollingFileAppender主要是基於FileAppender構建的,很多屬性方法都是繼承於FileAppender,所以在選項設置上,也有許多是相同的.

下面的例子使日誌文件名爲log.txt,日誌文件名是以文件大小進行變換的,如果舊日誌文件大小到100KB時,就會變換文件名爲log.txt.1,log.txt.2,log.txt.3...,一直到10爲止

  1. <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">  
  2.         <!--日誌文件名-->
  3.     <file value="log.txt"/>
  4.     <!--是否在文件中追加-->
  5.     <appendToFile value="true"/>
  6.     <!--按照文件的大小進行變換日誌文件-->
  7.     <rollingStyle value="Size"/>
  8.     <!--最大變換數量-->
  9.     <maxSizeRollBackups value="10"/>
  10.     <!--最大文件大小-->
  11.     <maximumFileSize value="100KB"/>
  12.     <!--日誌文件名是否爲靜態-->
  13.     <staticLogFileName value="true"/>
  14.     <layout type="log4net.Layout.PatternLayout">
  15.         <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
  16.     </layout>
  17. </appender>

下面的例子以時間週期變換日誌文件名,每分鐘都改變日誌的文件名,日誌文件名爲logfileyyyyMMdd-HHmm,這裏補充說明下,如果要在這個文件名後面加上.log後綴,必須使用轉義字符,比如<datePattern value="yyyyMMdd-HHmm&quot;.log&quot;" />

  1. <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  2.         <!--日誌文件名開頭-->
  3.     <file value="logfile" />
  4.     <!--是否追加到文件-->
  5.     <appendToFile value="true" />
  6.     <!--變換的形式爲日期-->
  7.     <rollingStyle value="Date" />
  8.     <!--日期的格式-->
  9.     <datePattern value="yyyyMMdd-HHmm" />
  10.     <layout type="log4net.Layout.PatternLayout">
  11.         <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  12.     </layout>
  13. </appender>

下面的例子綜合使用使用日期和文件大小變換日誌文件名。

  1. <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  2.     <!--日誌文件名開頭-->
  3.     <file value="logfile" />
  4.     <!--是否追加到文件-->
  5.     <appendToFile value="true" />
  6.     <!--混合使用日期和文件大小變換日誌文件名-->
  7.     <rollingStyle value="Composite" />
  8.     <!--日期的格式-->
  9.     <datePattern value="yyyyMMdd" />
  10.     <!--最大變換數量-->
  11.     <maxSizeRollBackups value="10" />
  12.     <!--最大文件大小-->
  13.     <maximumFileSize value="1MB" />
  14.     <layout type="log4net.Layout.PatternLayout">
  15.         <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  16.     </layout>
  17. </appender>

下面例子是在每次程序運行的時候,都會備份原先的日誌文件,當運行的日誌文件大於50G的時候纔會變換日誌文件名。

  1. <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  2.     <!--日誌文件名-->
  3.     <file value="logfile.txt" />
  4.     <!--不追加到原文件-->
  5.     <appendToFile value="false" />
  6.     <!--以日誌文件大小變換文件名-->
  7.     <rollingStyle value="Size" />
  8.     <!--最大變換數量,-1爲不限制-->
  9.     <maxSizeRollBackups value="-1" />
  10.     <!--最大文件大小-->
  11.     <maximumFileSize value="50GB" />
  12.     <layout type="log4net.Layout.PatternLayout">
  13.         <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  14.     </layout>
  15. </appender>

下面是RollingFileAppender類中的部分Public Instance Properties(公共屬性)的說明,沒有全部測試,難免謬誤,如果你知道,請不要吝嗇告寫。
CountDirection : 定義當前文件是最小編號的文件還是最大編號的文件。默認爲-1,總是以更小的編號。
datePattern : DateFormatter日期格式,string類型。
Encoding : 就是文件的編碼,默認爲Default,就是程序本身的編碼了。
FilterHead : 分割符頭部。
ImmediateFlush : 表示是否立即輸出到文件,布爾型的。
LockingModel : 文件鎖類型,RollingFileAppender本身不是線程安全的,如果在程序中沒有進行線程安全的限制,可以在這裏進行配置,確保寫入時的安全。有兩中類型:FileAppender.ExclusiveLockFileAppender.MinimalLock
Name
: 設置本Appander的名稱。
SecurityContext : 比較少應用,對日誌進行加密只類的,使用SecurityContextProvider轉換。(對日誌的保密要求比較高的時候應該可以應用上吧,Log4考慮的還挺周全)
Threshold : 設置內容級別的,比如:DEBUG,INFO等等。

 

在Log4net的配置中有兩種方法是等價的:
<param name="File" value="log.txt" />
<File value="log.txt" />
個人更傾向後者。在一些數據庫上的應用時還有許多Param呢。

 

小結
Log4的應用遠不止這些,幫助文件也是很詳盡的,在程序級還是配置級都有相關例子。在整理了一個RollingFileAppender就花了我不少工夫。如果有機會接觸到其他的內容,我會繼續整理出來。

發佈了225 篇原創文章 · 獲贊 7 · 訪問量 124萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章