【问题标题】:Setting up Log4Net to create only 4 files per day将 Log4Net 设置为每天仅创建 4 个文件
【发布时间】:2019-01-07 09:00:56
【问题描述】:

我希望每天有四个日志文件,其中包含日期作为文件名的一部分。 比如:

MYAPP-20190108-4.log
MYAPP-20190108-3.log
MYAPP-20190108-2.log
MYAPP-20190108-1.log
MYAPP-20190107-4.log
MYAPP-20190107-3.log
MYAPP-20190107-2.log
MYAPP-20190107-1.log

我知道我可以利用日期模式,但我最终得到了 24 个文件...

    <Logging Message2FilePath="C:\Messages">
  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="RollingStyle" value="Composite" />
      <param name="MaxSizeRollBackups" value="10" />
      <param name="StaticLogFileName" value="false" />
      <param name="AppendToFile" value="true" />
      <param name="MaximumFileSize" value="10MB" />
      <file type="log4net.Util.PatternString" value="C:\Logs\MYAPP-" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d{dd-MM-yy HH:mm:ss,fff} [%-5p][%3t]%m%n" />
      </layout>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <datePattern value="yyyyMMdd-HH'.log'" />
    </appender>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d{dd-MM-yy HH:mm:ss,fff} [%-5p][%3t]%m%n" />
      </layout>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="RollingFileAppender" />
    </root>
  </log4net>
</Logging>

按键设置:

&lt;param name="RollingStyle" value="Composite" /&gt;

&lt;file type="log4net.Util.PatternString" value="C:\Logs\MYAPP-" /&gt;

&lt;datePattern value="yyyyMMdd-HH'.log'" /&gt;

结果输出:

MYAPP-20190107-13.log
MYAPP-20190107-12.log
MYAPP-20190107-11.log
MYAPP-20190107-19.log
MYAPP-20190107-09.log

这可能吗?

【问题讨论】:

  • This 问题的答案建议使用Here 解释的方法。您可以尝试根据您的要求更改方法。

标签: log4net log4net-configuration log4net-appender


【解决方案1】:

感谢@ChetanRanpariya 的指点。 我不得不重写 RollingFileAppender,这是一个解决方案:

class RollingOverDaypartFileAppender : RollingFileAppender
{
    private DateTime nextRolloverDate;

    public RollingOverDaypartFileAppender(){}

    protected override void AdjustFileBeforeAppend()
    {
        if (DateTime.Now.Hour % 6 != 0) return;

        base.AdjustFileBeforeAppend();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    相关资源
    最近更新 更多