Log4Net可以自动删除日志文件吗?

时间:2010-11-23 19:09:09

标签: c# .net logging log4j log4net

我在用C#编写的Windows服务程序中使用log4net RollingFileAppender。日志目录中文件的数量和大小增长得太快,需要清理。配置如下:

<appender name="Rolling Log" type="log4net.Appender.RollingFileAppender">
<file value="..\logs\MyProgram.%cs{instanceName}.log" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value=".yyyy-MM-dd.lo\g" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="150MB" />
<layout type="log4net.Layout.PatternLayout">
  <conversionPattern value="%date [%-5level] %property{remoteUser} [%threadIdentity] %type{1}.%method - %message%newline%exception" />
</layout>

我只想保留30天的日志。如何配置log4net自动删除日志?如果没有通过log4net提供,我会有什么解决方案?

提前谢谢。

3 个答案:

答案 0 :(得分:9)

这是另一个问题,从这里问到基本上是同一件事: Log4Net: set Max backup files on RollingFileAppender with rolling Date

共识是log4net不直接支持它。一张海报说它已经在log4net的源代码库中实现,但还没有发布。另一张海报展示了他用来定期清理旧文件的一些代码。

答案 1 :(得分:4)

我很确定你不能使用现有的appender,虽然我无法确认。

但是,我看到两个选项:

  1. 创建自己的appender,子类化RollingFileAppender(或者,如果你想要更多控件,则继承FileAppender子类)。然后更改配置文件以使用该appender(更改appender元素)。
  2. 创建一个.bat文件,删除超过x天的文件(请参阅:Batch file to delete files older than N days)。然后在Windows(http://support.microsoft.com/kb/308569)中创建一个运行此bat文件的任务,例如每一天。

答案 2 :(得分:-1)

This应该提供一些帮助。查找RollingFileAppender部分