Log4ile中LogFileAppender的最大文件大小

Ash*_*Ash 36 .net log4net

我现在使用Log4net已经有一段时间了,这是一个了不起的日志框架,特别是在连接到Castle.Windsor时.然而...

我通常使用滚动文件appender,但这导致了太多的日志文件而不是我想要的,所以相反,对于我的最新项目,使用了基本的LogFileAppender,但问题是日志文件不断增长(看似永远) .

如何告诉appender不要超过固定大小(并开始删除旧日志并将新日志附加到文件中?

我目前的配置如下:

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <file value="E:\Logs\iWater\Schedule-Dispatch-API.log"/>
  <param name="AppendToFile" value="true"/>
  <maximumFileSize value="2048KB"/>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-16date{dd MMM HH:mm:ss} %-7level %-25.35logger{1} %message%newline"/>
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

看起来似乎没有遵守maximumFileSize属性.有解决方案吗

或者,如何将滚动文件appender配置为仅创建1个文件(永远)?

And*_*ite 68

FileAppender类没有MaxFileSize/MaximumFileSize属性.如果您使用RollingFileAppender,则只能获得这些.这是一个示例,它将文件限制为固定的最大大小,没有备份(将maxSizeRollBackups设置为0).请注意,当文件达到其最大大小时,它会截断(基本上删除所有现有日志记录并重新开始):

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="0" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

  • 为了避免完全截断并仍然解决_too许多日志文件_的报告问题,我建议将maxSizeRollBackups设置为较低的数字,例如2,并可能相应地减小maximumFileSize(对于2,除以3).这样,在截断之后,您仍然可以获得最新日志消息的三分之二,而不是没有. (22认同)