服务重新启动时,log4net日志文件消失

时间:2009-11-16 18:50:10

标签: c# .net logging log4net

我们正在使用log4net从Windows服务创建我们的日志文件,我们正在使用基于日期的RollingFileAppender滚动。我们使用的log4net版本是1.2.9。现在为了这个问题。我们根据日期滚动,并且在我们需要重新启动服务的那些日子里,当天的日志文件没有滚动。

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

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

更新

这是我的log4net.config appender部分

<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 个答案:

答案 0 :(得分:2)

正如empi所说,我们需要查看您的配置文件以确定。但是,我敢打赌你将Append属性设置为false。来自log4net docs

  

如果该值设置为false则为   文件将被覆盖,如果已设置   如果为true,则将附加文件   到。

尝试将此添加到您的RollingFileAppender配置:

 <appendToFile value="true" />

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

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

...记录为:

  

获取或设置一个指示的值   是否始终记录相同   文件。   如果总是应该记录到,则为true   相同的文件,否则为假。

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