我们正在用 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
谢谢!