2010-12-08 70 views
2

不知何故,當舊的日誌文件超過MaxFileSize時,我的log4net不會滾動到新文件,也停止將日誌信息寫入已經超出的日誌信息。但是,當我重新啓動服務器時,它將舊的名稱重命名爲ServerLog.txt.1,並創建一個新的文件ServerLog.txt並寫入該文件。Log4Net未在MaxFileSize上滾動

這裏是我的log4net.xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<log4net debug="true"> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="Logs\ServerLog.txt" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="5MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" /> 
    </layout> 
    </appender> 

    <root> 
    <level value="DEBUG" /> 
    <appender-ref ref="RollingLogFileAppender" /> 
    </root> 
</log4net> 

有人可以幫我嗎?謝謝。

+0

log4net可能無法創建/重命名由文件權限問題引起的備份文件嗎?日誌文件位於何處? – MatthiasG 2010-12-08 11:12:10

回答

2

我懷疑你的問題可能來自使用IIS的日誌。由於可能有不同的應用程序域在IIS內訪問日誌文件,因此應用程序域可能無法滾動文件,因爲日誌文件也在另一個應用程序域中打開。

您需要使用appender進行鎖定模型設置,以防止應用程序域在訪問文件時發生碰撞。

你應該能夠做這樣的事情:

<?xml version="1.0" encoding="utf-8"?> 
<log4net debug="true"> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="Logs\ServerLog.txt" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="5MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" /> 
    </layout> 
    <lockingModel type="log4net.Appender.FileAppender+MutexLock" /> 
    </appender> 

    <root> 
    <level value="DEBUG" /> 
    <appender-ref ref="RollingLogFileAppender" /> 
    </root> 
</log4net> 
0

我會嘗試刪除'staticLogFileName'。我們使用與您相同的配置設置;但我們不指定staticLogFileName屬性。 (這是一個黑暗的鏡頭;因爲應該可以將staticLogFileName設置爲true)