2017-10-05 94 views
0

我有一個循環過100,000+項的過程,並且在關於它們的日誌中進行了大量的寫操作,而且由於log4net不工作,我在保留所有需要的日誌時遇到了問題我如何期待它。log4net沒有保留正確的備份文件數

我的配置是這樣的:

<appender name="debug" type="log4net.Appender.RollingFileAppender"> 
    <file value="logs\" /> 
    <datePattern value="yyyyMMdd'_DEBUG.log'" /> 
    <staticLogFileName value="false" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Composite" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="10MB" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%newline[%date]-%level-%logger[%M]- Linea:%L - %message%newline"/> 
    </layout> 
    <filter type="log4net.Filter.LevelRangeFilter"> 
     <param name="LevelMin" value="debug"/> 
     <param name="LevelMax" value="debug"/> 
    </filter> 
    </appender> 

使用這個配置,我預計,一旦第一個文件已滿,第二個文件被創建,然後是第三等,最多的每天10個。我認爲覆蓋任何以前的日誌的唯一方法是擁有10個完整文件,並且下一個條目將不得不從第一個文件重寫現有文件。但是,發生的情況是,我在第一個文件已滿(並轉換爲第一個備份)後創建了一個文件,但是在第二個文件已滿後,而不是將其轉換爲另一個備份並轉到第三個文件,它開始覆蓋原始文件。

所以我最終

20171005_DEBUG.log

20171005_DEBUG.log.1

,沒有別的,與20171005_DEBUG.log被覆蓋掉了一個。

我可以通過將最大文件大小更改爲100MB或任何真正巨大的數據來「解決」這個問題,但我寧願知道我在這裏做錯了什麼。任何人?

回答

2

更改您的

<rollingStyle value="Composite" /> 

要麼

<rollingStyle value="Date" /> 

<rollingStyle value="Size" /> 

應該給你所期望的行爲。

Composite同時考慮日期和大小。

RollingFileAppender.RollingModes


既然你說處理100.000+行日誌,你有沒有考慮記錄到數據庫呢?

+0

「既然你說過處理100.000+行日誌,你有沒有考慮登錄到數據庫呢?」爲什麼? – Antrim

+2

那麼如果你只是爲了保留日誌而保留日誌,那麼查詢數據庫查看日誌事件比解析日誌文件更方便。 – Filburt

相關問題