我在Windows服务中使用log4.net进行日志记录。 这是我的配置;
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="MyApp.log" />
<appendToFile value="true" />
<bufferSize value="1" />
<maximumFileSize value="100000KB" />
<maxSizeRollBackups value="5" />
<rollingStyle value="Size" />
<immediateFlush value="true" />
</appender>
由于某种原因,在我停止服务之前它不会写入文件。是否有某种缓冲正在发生?一旦我停止服务,所有挂起的日志都会被写入。
会出现什么问题?
答案 0 :(得分:0)
奇怪,你肯定它真的有效吗?
我的log4net版本(版本1.2.11)需要布局(否则没有记录任何内容),并且没有 BufferSize 属性(但是没有&#39;停止工作)
此外, immediateFlush 应默认为true,因此不需要。
以下适用于我。
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="MyApp.log" />
<appendToFile value="true" />
<maximumFileSize value="100000KB" />
<maxSizeRollBackups value="5" />
<rollingStyle value="Size" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
答案 1 :(得分:0)
我的Windows服务遇到了类似的问题,它只在服务停止时写入日志。
我最初的想法是,这感觉就像某种锁定问题,无论是在.Net代码中还是在文件本身上,并且通过停止Windows服务,它会移除锁定并允许写入完成。
话虽如此,我注意到将Windows服务运行的用户帐户更改为具有更高权限的用户帐户,使其立即更新,而不是仅在服务停止时更新。
我将它从本地系统更改为管理员,它修复了问题。当然,不建议以管理员身份运行,但如果问题与个人资料/权限相关,它至少可以帮助您进行诊断。
我还没有弄清楚这个的根本原因......