如果在 Log4Net 配置中减少了 maxSizeRollBackups,它不会删除额外的日志文件



maxSizeRollBackups减少(假设 4 到 2)时,预计只应保留 2 个文件并删除额外的文件,但这并没有发生。 但是,如果我增加maxSizeRollBackups值,它将根据计数工作。

日志4网络设置:

<?xml version="1.0"?>
<configuration>
<log4net>
<logger name="ConsoleLog">
<level value="FATAL" />
<level value="ERROR" />
<level value="WARN" />
<level value="INFO" />
<level value="DEBUG" />
<appender-ref ref="ConsoleLogFile" />
</logger>
<appender name="ConsoleLogFile" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%property{ConsoleSetup}" />
<appendToFile value="true" />
<maxSizeRollBackups value="4" />
<maximumFileSize value="1KB" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<staticLogFileName value="true" />
<Encoding value="UTF-8" />
<layout type="log4net.Layout.PatternLayout">
<!-- %d:DateTime, %t:Thread, %-5p:Categories, %c:LoggerName, %m:ADKMessage, %n:line sepalator-->
<param name="ConversionPattern" value="%d ,%-5p, %m%n" />
</layout>
</appender>

日志配置上的 C# 观察程序:

log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(sPath));

根据上面的maxSizeRollBackups设置(4),存在以下文件。

"Application_ConsoleSetup.log">

"Application_ConsoleSetup.log.1">

"Application_ConsoleSetup.log.2">

"Application_ConsoleSetup.log.3">

"Application_ConsoleSetup.log.4">

然后我设置,maxSizeRollBackups到 2,然后我认为,应该删除以下文件,但不能删除。我想找出此问题的原因

"Application_ConsoleSetup.log.3">

"Application_ConsoleSetup.log.4">

请注意,如果我将maxSizeRollBackups设置为 6,则下面的文件将按预期生成。

"Application_ConsoleSetup.log.5">

"Application_ConsoleSetup.log.6">

原因是Log4net不会对其日志文件进行完整清单,并根据当前配置删除那些不应该存在的日志文件。它只是在记录时观察配置设置。查看 RollingFileAppender.cs 中RollOverRenameFiles的方法,您可以看到,如果发生日志文件滚动更新,则会删除最旧的文件,并重命名其他文件。"最旧的文件"是指根据当前配置的最旧文件。如果您的配置规定只应有 2 个备份,则最旧的文件为<baseFilename>.2Log4net从不检查是否有其他文件(.3.4等)是由于不同的配置而更早创建的。

相关内容

  • 没有找到相关文章

最新更新