1

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

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

4

2 回答 2

2

你可以使用rollingStyleas 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, ... 在一天结束时更改为。您可以通过将系统日期更改为未来来尝试查看此日志滚动机制。

于 2014-10-24T04:30:55.323 回答
0

如果您可以在运行时更改内容,则可以使用以下内容:

<file type="log4net.Util.PatternString" value="%property{FileName}" />

在代码中:

log4net.GlobalContext.Properties["FileName"] = somethingWithADateInIt;

并使用与您的语言相关的任何内容格式化 somethingWithADateInIt 字符串。

于 2012-07-25T19:19:46.380 回答