是否可以将 Log4net 配置为清理日志文件而不是按天清理?

Is possible to configure Log4net to clean log files but not by day?

现在我有以下配置:

 <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value="c:\temp\log.txt" />
    <appendToFile value="true" />
    <maximumFileSize value="2MB" />
    <maxSizeRollBackups value="100" />
    <lockingModel type="log4net.Appender.FileAppender+MutexLock" />
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="DEBUG" />
      <levelMax value="FATAL" />
    </filter>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="[%thread]; %-5level; %date{yyyy-dd-MM HH:mm:ss.fff}; [%logger]; %message; %newline"/>
    </layout>
  </appender>

通过这种配置,我得到了很多日志文件(每天 100 个日志文件),例如:

DAY 20:
log.txt.2016-07-20.1
log.txt.2016-07-20.2
...
log.txt.2016-07-20.100

DAY 21:
log.txt.2016-07-21.1
log.txt.2016-07-21.2
...
log.txt.2016-07-21.100

我想控制文件总数为 100 个文件,而不是每天 100 个文件。我怎么能这样控制?

您还没有指定 RollingStyle so that defaults to RollingMode.Composite

Composite: Roll files based on both the size and date of the file

这就是您每天 maxSizeRollBackups 的原因,因为默认日期滚动是每天一次。

你只想按大小而不是日期滚动,所以你应该将它添加到 appender 配置中:

<rollingStyle value="Size" />

config examples for RollingFileAppender

中有更多详细信息