Tai*_*red 9 logging log4net rollingfileappender
我有一个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>
Run Code Online (Sandbox Code Playgroud)
查看文档,默认滚动样式是Composite,因此当它达到特定大小(默认值为10MB)时,它将会滚动,而不仅仅是在日期.
问题是当它达到大小时,它正在重新启动日志并且我从前半天丢失数据(它在中午左右达到这个大小).
为什么这不会只是滚动到一个新文件,所有未来的日志行都被放入MyLog.log?或者是日志正在滚动,但是在午夜,它再次滚动并覆盖过时的日志(例如,一旦达到10MB,滚动到MyLog.log2009-04-08,然后在午夜覆盖同一个文件)?
我会设置
<rollingStyle value="Date" />
Run Code Online (Sandbox Code Playgroud)
这是我要做的就是确保它只在日期边界滚动吗?我可以在Log4Net.config中动态更改,还是必须重新启动应用程序?它在IIS6上运行.
dom*_*mer 11
这是我的设置.它只在日期滚动:
<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="c:\Logs\Today.log"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd"/>
<appendToFile value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level %logger %date{ISO8601} - %message%newline"/>
</layout>
</appender>
<root>
<!-- Options are "ALL", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" and "OFF". -->
<level value="ERROR"/>
<appender-ref ref="RollingFile"/>
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
对web.config的更改将自动重启应用程序(因此您将丢失会话等).
尝试添加maxSizeRollBackups您的参数RollingFileAppender来解决我们问题的一半.这样,当日志文件滚动时,它不会覆盖旧日志,而是会将其滚动到另一个文件.
<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"/>
<param name="maxSizeRollBackups" value="10" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)