2010-11-23 193 views
18

我在用C#編寫的windows服務程序中使用log4net RollingFileAppender。日誌目錄中文件的數量和大小增長太快,需要清理。配置如下:可以Log4Net自動刪除日誌文件?

<appender name="Rolling Log" type="log4net.Appender.RollingFileAppender"> 
<file value="..\logs\MyProgram.%cs{instanceName}.log" /> 
<appendToFile value="true" /> 
<rollingStyle value="Composite" /> 
<datePattern value=".yyyy-MM-dd.lo\g" /> 
<maxSizeRollBackups value="10" /> 
<maximumFileSize value="150MB" /> 
<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%-5level] %property{remoteUser} [%threadIdentity] %type{1}.%method - %message%newline%exception" /> 
</layout> 

我只希望保留日誌30天。我如何配置log4net自動刪除日誌?如果沒有通過log4net提供,我會有什麼解決方案?

預先感謝您。

回答

-1

This應該提供一些幫助。查找RollingFileAppender進行部分

+3

他已經在使用RollingFileAppender,並且本文檔中沒有關於是否可以這樣做的信息。 – steinar 2010-11-23 19:56:17

+1

沒有什麼可以做的。 – 2014-11-05 16:31:41

8

這裏是SO從這裏另外一個問題,基本上要求同樣的事情: Log4Net: set Max backup files on RollingFileAppender with rolling Date

的共識是,log4net的不直接支持它。一張海報說它已經在log4net的源代碼庫中實現,但還沒有發佈。另一張海報顯示了他用來定期清理舊文件的一些代碼。

+0

這個選項對我來說很吸引人,因爲它比重寫RollingFileAppender更容易。現在我打算添加日誌維護作業,由Quartz.Net等調度器觸發。 – tonyjy 2010-11-23 20:43:40

4

我很確定你不能用現有的appender做,雖然我無法證實它。

但是,我看到兩個選項:

  1. 創建自己的appender,繼承RollingFileAppender進行(或者,如果你想要更多的控制,子類FileAppender)。然後改變你的配置文件來使用appender(改變appender元素)。
  2. 創建一個.bat文件,刪除x天以前的文件(請參閱:Batch file to delete files older than N days)。然後在運行此bat文件的Windows(http://support.microsoft.com/kb/308569)中創建一個任務,例如每天。