在服务重新启动之前,Log4net日志在Windows Server 2012上不会更新

时间:2015-11-02 13:47:30

标签: c# windows-services log4net windows-server-2012

我正在使用log4net登录我的Windows服务,它在XP,7,8,Windows Server 2003上运行良好。

但是当谈到Windows 2012服务器(其中还包含SQL Server 2012)时,log4net不会记录/更新日志。

在Windows服务中执行某些操作后,日志文件未更新。它需要重新启动Windows服务才能更新日志。只有在重新启动服务后才能看到上次/最近的日志。

     <log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="Log\MyLog_" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <datePattern value="yyyyMMdd.lo\g" />
  <maxSizeRollBackups value="6" />
  <staticLogFileName value="false" />
  <layout type="log4net.Layout.PatternLayout">
    <!--<conversionPattern value="%date %level %logger - %message%newline%exception"/>-->
    <param name="ConversionPattern" value="%date %-5level %-60logger - %-10message%newline%exception" />
  </layout>
</appender>
<appender name="SnFApp" type="log4net.Appender.RollingFileAppender">
  <file value="Log\MyLog1_" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <datePattern value="yyyyMMdd.lo\g" />
  <maxSizeRollBackups value="6" />
  <staticLogFileName value="false" />
  <layout type="log4net.Layout.PatternLayout">
    <!--<conversionPattern value="%date %level %logger - %message%newline%exception"/>-->
    <param name="ConversionPattern" value="%date %-5level %-60logger - %-10message%newline%exception" />
  </layout>
</appender>
<logger name="TransactionManager.SaFManager.ClCCTaMPOSSaFManager">
  <appender-ref ref="SnFApp" />
</logger>
<root>
  <level value="DEBUG" />
  <appender-ref ref="RollingFileAppender" />
</root>
<logger name="Log4NetTest.OtherClass">
  <level value="DEBUG" />
  <appender-ref ref="ConsoleAppender" />
</logger>

2 个答案:

答案 0 :(得分:1)

就我而言,它默认情况下专门锁定文件。如果这有帮助,你能试试吗?

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

我们已经在2012 Server上运行它,没有这个问题。

答案 1 :(得分:0)

您似乎在Windows 2012服务器上看到以下行为,日志记录正常,只有文件时间戳未更新:

file-date-modified-property-are-not-updating-while-modifying-a-file-without-closing-it

  

现在,我们正在监控这个问题:当一个人正在开发一个   在日志文件更新时监视日志文件的实用程序。

     

2003年,在资源管理器中打开日志文件夹,可以看到   每次登录时,时间戳和文件大小都会在您眼前变化   更新。

     

2008年,&#34;上次修改&#34;除非更新日志文件上的字段   另一个程序试图打开该文件或该实用程序已停止,   即使按下F5来刷新视图。

     

资源管理器获取来自NTFS的信息,使用cmd提示符和   &#34; DIR&#34;我们发现文件的NTFS元数据没有更新   直到文件句柄关闭。