你知道日期滚动的log4net appender,但是你是否限制了文件总数?

时间:2010-01-14 10:06:31

标签: .net log4net rollingfileappender

我需要以每天获取一个日志文件的方式为log4net定义一个appender,但是文件的总数限制为,比方说,30。这就是我想只保留不旧的日志然后30天,删除旧的。

我尝试过使用RollingFileAppender,但似乎是specifying a limit of files to keep is not supported。您知道我可以使用的替代解决方案吗?

3 个答案:

答案 0 :(得分:2)

几个月前,我花了一些时间研究这个问题。 v1.2.10不支持基于按日期滚动删除较旧的日志文件。它位于下一版本的任务列表中。我自己获取了源代码并添加了功能,如果他们感兴趣,可以将其发布给其他人。问题和补丁可以在https://issues.apache.org/jira/browse/LOG4NET-27找到。

答案 1 :(得分:1)

编写C#WinService或在应用程序中创建一个BackgroundWorker,它将每天监视一次旧日志文件并将其删除。您可以将FileSystemWatcher用于此范围。

或者只测试运行新日志文件的每个应用程序并删除它。

另一个选项是不在本地存储文件,而是通过网络(邮件,远程服务器等)发送文件。

另请参阅重复问题:herehere

答案 2 :(得分:1)

你可以使用'复合'日志类型吗?更多信息:http://logging.apache.org/log4net/release/config-examples.html

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