目前我正在使用log4net 1.2.10.0版为我的.net窗口应用程序编写日志。如果滚动样式基于日期,即使我设置了以下语句,也不会自动删除旧的日志文件:
RollingFileAppender rollingFileAppender = new RollingFileAppender();
rollingFileAppender.MaxSizeRollBackups = 2;
如果是,如何通过在编码中编写一些语句来自动删除那些旧的日志文件?
答案 0 :(得分:1)
如何设置appender的示例片段:
<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" />
如果为真,则附加到最后一个日志文件
<rollingStyle value="Size" />
滚动样式可以是大小,日期或复合。我认为你正在寻找复合材料。在此示例中,它设置为“大小”,这意味着滚动定义仅会查看所有生成的日志文件的数量。如果达到最大文件数,则将覆盖最旧的日志文件。
<maxSizeRollBackups value="100" />
这是此appender的最大允许日志文件的定义。
<maximumFileSize value="10MB" />
此appender创建的每个日志文件都定义了最大限制大小限制;每个文件10MB。 (所以在这种情况下:100 * 10 MB = 1GB的日志文件是我们允许的最大日志记录量;对于这个appender而言。
<staticLogFileName value="true"/>
这确保我始终写入同一个日志文件,这样我可以相信,当我查看context.log
时,我会查看最新的日志记录。如果您想依赖日期滚动,这将无效。
引用: 每天的文件大小不同,我想要实现的是一个 文件将被删除每天,以便相同的日志量 文件将在几天内存储
你不是在寻找一个&#34;滚动&#34;登录窗口。您正在寻找&#34;备份记录&#34;每一天。我不认为通过配置log4net很容易实现。可以将滚动样式设置为Composite,以便它既可以查找日期时间模式,也可以查找最大数量的文件。
E.g。您可以将log4net配置为每天写入10个日志文件,每个生成的日志文件具有最大大小。
<rollingStyle value="Composite" />
<datePattern value=".yyyyMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
这将导致每天最多100MB的记录。但那仍然没有回答你的问题......
虽然HTH有点......