2

我需要以每天获取一个日志文件的方式为 log4net 定义一个附加程序,但文件总数限制为 30 个。也就是说,我只想保留不超过 30 天的日志,删除旧的。

我试过用 RollingFileAppender 来做,但似乎不支持指定要保留的文件限制。您知道我可以使用的替代解决方案吗?

4

3 回答 3

2

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

于 2010-03-12T17:43:57.410 回答
1

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

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

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

另请参阅重复问题:此处此处

于 2010-01-14T10:41:03.060 回答
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>

于 2010-01-14T22:04:49.813 回答