2009-11-16 62 views
0

我们使用log4net从Windows服务创建日志文件,并且我们使用基于日期的RollingFileAppender滚动。我们使用的log4net版本是1.2.9。现在解决这个问题。我们基于日期进行滚动,在需要重新启动服务的日子里,当天的日志文件不会滚动。当服务重新启动时,log4net日志文件消失

例如:今天说的是11月16日。我有logfile.txt包含今天的信息,并且我有logfile.txt.20091115,logfile.txt.20091112和logfile.txt.20091111。我错过了11/13和11/14的文件,因为这两天都在重启服务。

正如其他人经历过这个或知道为什么会发生这种情况?

更新:

这里是我的log4net.config附加器部分

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <param name="File" value="logfile.txt" /> 
    <param name="AppendToFile" value="true" /> 
    <param name="MaxSizeRollBackups" value="10" /> 
    <param name="MaximumFileSize" value="1000KB" /> 
    <param name="RollingStyle" value="Date" /> 
    <param name="DatePattern" value="yyyyMMdd" /> 
    <param name="StaticLogFileName" value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="Header" value="[Service Started]&#13;&#10;" /> 
    <param name="Footer" value="[Service Stopped]&#13;&#10;" /> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> 
    </layout> 
</appender> 

正如你可以看到AppendToFile参数是设置为true。

我想澄清一些事情。该文件在重新启动服务时不会被覆盖。当文件假设根据日期滚动时,文件消失。

+1

请发布您的log4net配置 – empi 2009-11-16 18:54:20

回答

2

正如empi所说,我们需要查看您的配置文件以确认。不过,我敢打赌你将Append属性设置为false。从log4net docs

如果该值设置为false,那么 文件将被覆盖,如果它被设置 为true,那么该文件将被追加到 。

尝试添加以下内容到RollingFileAppender进行配置:

<appendToFile value="true" /> 

编辑:看您发布的配置文件,这行看起来很奇怪:

<param name="StaticLogFileName" value="true" /> 

...这是记录as:

获取或选择ts是指示 是否始终登录到相同的 文件的值。 如果始终应该记录到 相同的文件,则为true,否则为false。

这听起来像它符合你所看到的。尝试删除该行,或将其设置为false。

相关问题