Log4net-根据日期删除旧的日志文件

本文关键字:日志 文件 删除 日期 Log4net- | 更新日期: 2023-09-27 18:25:56

当前我使用log4net 1.2.10.0版本为我的.net窗口应用程序编写日志。如果滚动样式是基于日期的,那么即使我设置了以下语句,旧的日志文件也不会自动删除,这是真的吗:

RollingFileAppender rollingFileAppender = new RollingFileAppender();
rollingFileAppender.MaxSizeRollBackups = 2;

如果这是真的,我如何通过在代码中写一些语句来自动删除那些旧的日志文件?

Log4net-根据日期删除旧的日志文件

如何设置附加程序的示例片段:

  <appender name="ContextLogAppender" type="log4net.Appender.RollingFileAppender">
    <file value="..'Logs'ContextLog'context.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="100" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true"/>
    <countDirection value="1"/>
    <PreserveLogFileNameExtension value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss,fff} [%-5level][thread: %thread][%logger] %message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelMatchFilter">
      <levelToMatch value="PRODUCTION" />
    </filter>
    <filter type="log4net.Filter.LevelMatchFilter">
      <levelToMatch value="CONTEXT" />
    </filter>
    <filter type="log4net.Filter.LevelMatchFilter">
      <levelToMatch value="INFO" />
    </filter>
    <filter type="log4net.Filter.LevelMatchFilter">
      <levelToMatch value="WARN" />
    </filter>
    <filter type="log4net.Filter.LevelMatchFilter">
      <levelToMatch value="ERROR" />
    </filter>
    <filter type="log4net.Filter.LevelMatchFilter">
      <levelToMatch value="FATAL" />
    </filter>
    <filter type="log4net.Filter.DenyAllFilter" />
  </appender>

这个appender将一组类别记录到日志文件中。你最感兴趣的属性(我认为)

    <appendToFile value="true" />

如果为true,则附加到最后一个日志文件

    <rollingStyle value="Size" />

滚动样式可以是大小、日期或组合。我想你在找复合材料。在本例中,它被设置为"大小",这意味着滚动定义查看所有生成的日志文件的数量。如果达到文件的最大数量,则最旧的日志文件将被覆盖。

    <maxSizeRollBackups value="100" />

这是此appender允许的最大日志文件的定义。

    <maximumFileSize value="10MB" />

这个appender创建的每个日志文件都定义了最大限制大小限制;每个文件10MB。(所以在这种情况下:100*10MB=1GB的日志文件是我们允许的最高日志记录量;对于这个appender)。

    <staticLogFileName value="true"/>

这样可以确保我总是写入同一个日志文件,这样我就可以相信,当我查看context.log时,我会查看最新的日志记录。如果您想依赖日期滚动,这将不起作用。

报价:文件大小每天都不一样,我想要实现的是每天都会删除文件,以便相同数量的日志文件将在几天内存储

你不是在寻找一个"滚动"的日志窗口。你每天都在寻找"备份日志"。我认为仅仅通过配置log4net是不容易实现的。可以将滚动样式设置为Composite,这样它既可以查找日期-时间模式,也可以查找最大数量的文件。

例如,您可以将log4net配置为每天写入10个日志文件,每个生成的日志文件的最大大小为。

<rollingStyle value="Composite" />
<datePattern value=".yyyyMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />

这将导致每天最多100MB的日志记录。但这仍然不能回答你的问题。。。

不过HTH有点。。。