2017-07-07 15 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" />配置为不覆盖现有文件。

相关问题