已经实现啦,链接在这里:http://blog.csdn.net/hellolib/article/details/78316253
我的需求,跟这位网友一样,想让日志文件自动被删除掉,只保留最近一段时间的。转自:http://bbs.csdn.net/topics/370171242
=============网友需求start===========
如何控制log4net写日志文件的数量
就是其他配置我都已经配置好了,能达到我的要求,日志文件是按日期产生的,如:Log2010.04.07.log,Log2010.04.08.log.
我的意思是想log4net有没有这样的功能:通过配置来控制日志文件的数量。
我担心的是日积月累,怕日志文件太多了。想通过配置web.config来控制,如果我配置只保留7个文件,首先会依次生成7个日志文件:
Log2010.04.07.log
Log2010.04.08.log
Log2010.04.09.log
Log2010.04.10.log
Log2010.04.11.log
Log2010.04.12.log
Log2010.04.13.log
当到04月14日时,删除Log2010.04.07.log文件,再增加Log2010.04.14.log这个日志文件。
不知道log4net本身是否具有这样的功能,如果没有,那只有我自己写代码来判断删除了。
===========网友需求end================
试了网上各种办法,全都失败了,,估计这个功能跟log4net内部其它功能有冲突,实现复杂,所以就没提供吧。
所以,只能自己写代码删除了,我的思路:
在初始化ILog的地方,做一次删除操作,根据命名规则得到日期,只保留最近一年或者三个月以内的文件。
附一个我的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log\\log.log" />
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<!--<param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />-->
<appendToFile value="true" />
<datePattern value="yyyy-MM-dd'.txt'"/>
<maximumFileSize value="5000KB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<logger name="Logging">
<level value="ALL"/>
<appender-ref ref="FileAppender" />
</logger>
<root>
<level value="ALL" />
</root>
</log4net>