【问题标题】:Change log4net config to create every x hour new log更改 log4net 配置以每 x 小时创建一次新日志
【发布时间】:2026-02-03 13:30:01
【问题描述】:

如果我想每 x 小时记录一次日志,我仍然不知道如何更改 log4net。我有这个:

      <log4net>
        <root>
          <level value="DEBUG"/>
          <appender-ref ref="LogFileAppender"/>
        </root>
        <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="C:\log.txt"/>
          <param name="AppendToFile" value="true"/>
          <rollingStyle value="Size"/>
          <maxSizeRollBackups value="10"/>
          <maximumFileSize value="100MB"/>
          <staticLogFileName value="true"/>
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n"/>
          </layout>
        </appender>
  </log4net>

我有一个日志,我总是在这个 log.txt 中添加日志 - 现在我想让我们说每天一个新的日志文件(24 小时)或者每 12 小时一个新日志。我必须在我的配置中更改什么?对我的配置有什么建议吗?谢谢

【问题讨论】:

  • 试一试 rollingStyle Date 和 dateParameter。我怀疑您可能想编写自己的 appender,这很容易做到。

标签: .net logging log4net


【解决方案1】:

回复:http://logging.apache.org/log4net/release/config-examples.html

这个例子展示了如何配置 RollingFileAppender 在一个日期周期滚动日志文件。此示例将每分钟滚动一次日志文件!要更改滚动周期,请调整 DatePattern 值。例如,“yyyyMMdd”的日期模式将每天滚动。有关可用模式的列表,请参阅 System.Globalization.DateTimeFormatInfo

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logfile" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd-HHmm" />
<layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>

在您的特定情况下,上面带有&lt;datePattern value="yyyyMMdd-HH" /&gt; 的示例仅允许您每小时记录一次。

但是,如果您想每隔X 小时记录一次,您可以创建一个从RollingFileAppender 派生的自定义附加程序并覆盖AdjustFileBeforeAppend 方法,该方法将根据您的下一个计划的日志间隔日期检查当前时间。例如,请参阅Have a Log4Net RollingFileAppender set to roll weekly

【讨论】:

    【解决方案2】:

    如下替换滚动样式:

    <rollingStyle value="Date" />
    

    您可能还想取消文件大小限制。

    【讨论】: