2017-07-07 67 views
1

我正在使用log4net的wpf應用程序。它當前記錄到單個文件,並且只在文件變得太大時纔會滾動。我試圖修改它,以便在文件變得太大時,日期發生變化時,或者應用程序重新啓動時增長。C# - log4net在日期,大小和應用程序重新啓動時翻轉

我試圖得到儘可能接近以下儘可能

App_2017-07-06.0.txt //First launch on 2017-07-06 
App_2017-07-06.1.txt //Rollover due to size limit 
App_2017-07-06.2.txt //Application relaunch 
App_2017-07-06.3.txt //Rollover due to size limit 
App_2017-07-07.0.txt //Rollover due to date change 
App_2017-07-07.1.txt //Rollover due to size limit 
App_2017-07-07.2.txt //Application relaunch - Currently Logging File 

從我從文檔理解輸出,滾動式的,可以設置爲「compostite」拍攝日期和大小,也可以被設置爲「一次」以捕獲應用程序重新啓動。它似乎沒有辦法做所有3:http://logging.apache.org/log4net/release/sdk/html/T_log4net_Appender_RollingFileAppender_RollingMode.htm

我得到了一切看起來正確的工作,除了應用程序重新啓動覆蓋預先存在的文件(我想象因爲appendToFile屬性)。我似乎無法按照我需要的方式工作,而且在文檔中找不到任何答案。

這個問題似乎是試圖實現類似的目標,但並沒有解決我的問題: How do I force a rollover at application startup with Log4net RolloverFileAppender?

我缺少的東西?用log4net做到這一點是不可能的?

我目前的配置

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file type="log4net.Util.PatternString" value="Log\App.txt" /> 
     <appendToFile value="false" /> 
     <rollingStyle value="Composite" /> 
     <maximumFileSize value="10KB" /> 
     <maxSizeRollBackups value="-1" /> 
     <staticLogFileName value="false" /> 
     <preserveLogFileNameExtension value="true" /> 
     <countDirection value="1" /> 
     <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %level User = %username Class = %property{ClassName} Method = %property{MethodName}%newlineMessage - %message%newline%exception%newline***************************************" /> 
     </layout> 
    </appender> 

我的電流輸出

App_2017-07-06.0.txt //First launch on 2017-07-06 
App_2017-07-06.1.txt //Rollover due to size limit 
App_2017-07-06.1.txt //Application relaunch - overwrites pre-existing file 
App_2017-07-06.2.txt //Rollover due to size limit 
App_2017-07-07.0.txt //Rollover due to date change 
App_2017-07-07.1.txt //Rollover due to size limit 
App_2017-07-07.1.txt //Application relaunch - overwrites pre-existing file - Currently logging file 

回答

0

據我所知,log4net的副本日誌文件,以XXXX。{}號的.txt時候翻轉到下一個文件。因此,您的第一個App_2017-07-06.1.txt從未創建,並且在應用程序重新啓動時仍稱爲App_2017-07-06.txt。您已經配置,所以App_2017-07-06.txt將被覆蓋,並且您的第一個App_2017-07-06.1.txt從未創建。您可以將<appendToFile value="true" />配置爲不覆蓋現有文件。