1

我们正在用 log4Net 替换自定义构建的日志记录组件。目前我们的日志文件基于大小滚动,但在创建新日志时在文件名中包含日期/时间戳。

例如; Application-2015-04-06-130733.log

当这个日志文件达到一个可配置的大小时,比如说 10MB,一个新的文件被创建了一个新的日期/时间戳。

我搜索了网络、论坛、log4net 文档等,但无法在 log4net 配置中找到实现此目的的方法。

这是我最新的 log4net 配置文件:

<log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" type="log4net.Util.PatternString" value="%property{ProgramDataLogDir}\Application-.log"/>
      <param name="AppendToFile" value="false"/>
      <param name="RollingStyle" value="Composite"/>
      <param name="DatePattern" value="yyyy-MM-dd" />
      <param name="MaxSizeRollBackups" value="-1"/>
      <param name="MaximumFileSize" value="10MB"/>
      <param name="StaticLogFileName" value="false"/>
      <param name="preserveLogFileNameExtension" value="true" />
      <threshold value="DEBUG"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%property{ThreadID} %d{MM/dd/yy HH:mm:ss.fff} %property{DebugLevel} %property{ComputerName} %property{ProcessName} [%t] %c %m%n" />
      </layout>
    </appender>

    <root>
      <appender-ref ref="RollingFileAppender"/>
    </root>

  </log4net>

这会导致使用 Application-2015-04-06.log 创建日志文件,当达到 10MB 阈值时,会在该日期之后创建一个新文件,其中包含 .1、.2、.3 等。

Application-2015-04-06.1.log

Application-2015-04-06.2.log

Application-2015-04-06.3.log

如果我可以将 .1、.2、.3 等更改为日期戳 HHmmss,这将是完美的。

此外,每次启动应用程序时,我都需要启动一个全新的文件。如果我可以实现类似于 Application-2015-04-06-130733.log 的格式,它也应该处理这种情况。

总结一下:

1.) 文件按大小滚动。

2.) 每次创建新文件时,无论是应用程序启动时还是按大小滚动时,文件名都应包含新的日期/时间戳。

Application-2015-04-06-130733.log

谢谢!

4

0 回答 0