2014-12-03 66 views
4

這是我的log4net配置,翻轉日誌文件被錯誤地創建爲擴展名。第一個使用log_debug.txt名稱創建的文件,以及使用log_debug.txt.1創建的翻轉文件。但理想情況下它應該是log_debug.1.txt。Log4net preserveLogFileNameExtension不起作用

我用preserveLogFileNameExtension值爲true,但它似乎不工作。你能檢查一下,讓我知道是否有什麼問題嗎?

<appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> 
 
    <filter type="log4net.Filter.LevelRangeFilter"> 
 
     <levelMin value="DEBUG" /> 
 
     <levelMax value="DEBUG" /> 
 
    </filter> 
 
    <file value=".\logs\log_debug.txt" /> 
 
    <appendToFile value="true" /> 
 
    <rollingStyle value="Size" /> 
 
    <maxSizeRollBackups value="20" /> 
 
    <maximumFileSize value="2MB" /> 
 
    <preserveLogFileNameExtension value="true" /> 
 
    <staticLogFileName value="true" /> 
 
    <layout type="propertyPatternLayout"> 
 
     <conversionPattern value="%date || Thread=%thread" /> 
 
    </layout> 
 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
 
    </appender>

+0

它可能與[staticLogFileName](http://logging.apache.org/log4net/release/sdk/log4net .Appender.RollingFileAppender.StaticLogFileName.html),我不認爲你想在這種情況下。 – stuartd 2014-12-03 21:20:30

+0

我測試通過移除staticLogFileName,但仍然沒有工作.. – user845392 2014-12-04 16:06:02

+1

您正在使用什麼版本?此外,您還可以嘗試使用'<佈局類型= 「log4net.Layout.PatternLayout」>'?除了修改log4net異常以外,這適用於版本1.2.13。 – matth 2014-12-08 16:21:42

回答

1

我的第一個答案(下圖)的基礎上的log4net的V1.2.10,我輕輕地對v1.2.13版本,確實包含preserveLogFileNameExtension打了招呼。有些測試證實,該屬性也按預期工作,並且不依賴於staticLogFilename屬性。

我覺得OP使用的log4net的先前版本不包含財產,從而再次表現出如下所述的行爲(making3和西瓦庫瑪評論是當場IMO)

感謝叫醒我了的1.2.10槽。


初始答案

第一件事,第一:沒有preserveLogFileNameExtension屬性香草log4net的一個RollingFileAppender(或任何附加器)(我看1.2.10.0版本)。大多數log4net的組件將消耗任何屬性配置,你不抱怨送他們的方式,但它並不一定轉化爲行爲的組件


當大小(或複合)滾動,會發生什麼情況是,滾來滾去被硬編碼爲用迭代號碼後綴日誌文件。您將始終得到一個「file.log.n」,其中n與下一個文件編號匹配(這取決於您的maxSizeRollBackupscountDirection值)。您無法避免使用當前的RollingFileAppender(請參閱RollingFileAppender.RollOverRenameFiles方法)

該怎麼辦?您可以決定按日期滾動。在這種情況下,可以使用datePattern屬性。滾動時datePattern附加到文件名,這樣你就可以使用像

<file value="file.log" /> 
<datePattern value=".yyyy-MM-dd-hh-mm-ss'.log'" /> 

這將保護延伸和創建像file.log.2014-12-11-11-47-54.log文件(請參閱文件名原.log擴展名)。但是你正在失去尺寸限制的方面。如果你使用Composite,你會遇到同樣的問題。因爲RollOverSize總會出現在RollOverDate後面的數字前綴將出現。

你也可以決定使用你想要/需要的命名約定來推出(ah啊)你自己的appender。你甚至可以嘗試從香草RollingFileAppender繼承,並只覆蓋必要的方法。 AdjustFileBeforeAppend是虛擬的,是所有翻車需求的起點;您可以嘗試例如將電話撥回RollOverDateRollOverSize以使用複合模式...

+0

你可能是正確1.2.10,而不是當前版本(1.2.13):http://logging.apache.org/log4net/release/sdk/log4net.Appender.RollingFileAppender.PreserveLogFileNameExtension.html更新強烈推薦,因爲實際上有與滾動被固定1.2.10和1.2.11之間文件的一些討厭的錯誤。 – 2014-12-11 11:36:51

+0

@JeroenMostert感謝擡起頭。我認爲這些小版本中沒有一些變化。 – samy 2014-12-11 11:42:04