Log4net-根据日期删除旧的日志文件
本文关键字:日志 文件 删除 日期 Log4net- | 更新日期: 2023-09-27 18:25:56
当前我使用log4net 1.2.10.0版本为我的.net窗口应用程序编写日志。如果滚动样式是基于日期的,那么即使我设置了以下语句,旧的日志文件也不会自动删除,这是真的吗:
RollingFileAppender rollingFileAppender = new RollingFileAppender();
rollingFileAppender.MaxSizeRollBackups = 2;
如果这是真的,我如何通过在代码中写一些语句来自动删除那些旧的日志文件?
如何设置附加程序的示例片段:
<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有点。。。