带有DateTime标记的文件名

时间:2012-07-25 07:53:02

标签: log4net

我有以下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。

如何在文件名中添加日期时间戳?

2 个答案:

答案 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字符串。