我有一个Log4Net RollingFileAppender,其配置如下:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<root>
<level value="ALL" />
</root>
<logger name="RollingFileAppender" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="RollingFileAppender" />
</logger>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" >
<param name="File" value="C:\\MyLog.log" />
<param name="AppendToFile" value="true" />
<param name="DatePattern" value="yyyy-MM-dd"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
</appender>
</log4net>
</configuration>
根据文档,默认的滚动方式是Composite,因此当日志文件达到某个大小(默认为10MB)时,它会滚动而不仅仅是按日期滚动。
问题在于,当它达到大小限制时,它会重新开始记录日志并且我会丢失一天中前半部分的数据(这通常发生在中午左右达到大小限制)。
为什么它不会直接滚动到一个新文件中,所有未来的日志行都放入MyLog.log中呢?
或者说日志正在滚动,但是在午夜时分又重新滚动并覆盖日期标记的日志文件(例如,在达到10MB后滚动到MyLog.log2009-04-08,然后在午夜时分再次覆盖同一文件)?
我将设置
<rollingStyle value="Date" />
这是我必须做的所有事情来确保它仅在日期边界上滚动吗?我能否在Log4Net.config中即时更改此设置,还是必须重新启动应用程序?它正在IIS6上运行。