我有以下RollingFileAppender配置:
<appender name="appender.VTBGPRS" type="log4net.Appender.RollingFileAppender">
<rollingStyle value="Size" />
<file value="mylog" />
<staticLogFileName value="false" />
<appendToFile value="true" />
<maximumFileSize value="100KB" />
<maxSizeRollBackups value="20" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %logger{1} - %message%newline" />
</layout>
</appender>
我的文件名为mylog,mylog.1,mylog.2等。
我想在文件名中添加日期时间戳。例如mylog-2012-07。
我无法使用datePattern,因为rollingStyle设置为Size。
如何在文件名中添加日期时间戳?
答案 0 :(得分:2)
您可以将rollingStyle
用作Composite
。它将根据大小和日期分割日志。
<appender name="appender.VTBGPRS" type="log4net.Appender.RollingFileAppender">
<rollingStyle value="Composite" />
<datePattern value="-yyyyMMdd'.txt'" />
<file value="mylog" />
<appendToFile value="true" />
<maximumFileSize value="100KB" />
<maxSizeRollBackups value="20" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %logger{1} - %message%newline" />
</layout>
</appender>
这会生成日志:myLog.1, mylog.2, ...
当天,并且在一天结束时会更改为myLog-20141024.txt.1, myLog-20141024.txt.2, ...
。您可以通过将系统日期更改为将来来尝试它,以查看此日志滚动机制。
答案 1 :(得分:0)
如果您可以在运行时更改内容,则可以使用以下内容:
<file type="log4net.Util.PatternString" value="%property{FileName}" />
在代码中:
log4net.GlobalContext.Properties["FileName"] = somethingWithADateInIt;
并使用您的语言中的相关内容格式化somethingWithADateInIt字符串。