使用RollingFileAppender以日期为日志文件名,网上提供最多的做法就是:
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> <file value="Logs/" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <datePattern value="yyyy-MM-dd".log"" /> <maxSizeToRollBackups value="10" /> <maximumFileSize value="3000kb" /> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%L] - %m%n" /> </layout> </appender>
配置后可以日期名输出文件名,但是也会生成重复日期的文件名,比如:2012-03-20.log,也会生成2012-03-20.log2012-03-20.log, 并且不能写入的日志内容,这样的结果肯定不是我们想要的。
后来又继续研究源码查找资料,才发现要达到这样的目的,其实很简单,只需要将上面 的file配置项按下面这样配置就好了:
<file type="log4net.Util.PatternString" value="Logs/%date{yyyy-MM-dd}.log" />
其中 %date 是 log4net.Util.PatternString 里约定的日期输出,{yyyy-MM-dd} 就是我们熟悉的日期格式输出了
当然<staticLogFileName value="true" />按默认配置就好了,完整的配置如下:
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> <file type="log4net.Util.PatternString" value="Logs/%date{yyyy-MM-dd}.log" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <datePattern value="yyyy-MM-dd" /> <maxSizeToRollBackups value="10" /> <maximumFileSize value="3000kb" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%L] - %m%n" /> </layout> </appender>