我正在使用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>
答案 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元数据没有更新 直到文件句柄关闭。