我有一个Windows C#应用程序,它使用log4net进行日志记录。这是记录器的配置方式:
<log4net>
<appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Local\logs\ApplnTrace.log" />
<threshold value="INFO" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%5p] - (%file:%line) %m%n" />
</layout>
</appender>
<appender name="MSGFileAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\local\logs\MsgTrace.log" />
<threshold value="INFO" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d %n%m%n" />
</layout>
</appender>
<logger name="ApplnLogger">
<appender-ref ref="DebugFileAppender" />
</logger>
<logger name="MsgLogger">
<appender-ref ref="MSGFileAppender" />
</logger>
</log4net>
有时会根据日期滚动文件,有时则不会,当文件未滚动时,日志记录也会停止。任何人都可以帮我找出原因吗?
答案 0 :(得分:4)
log4Net旨在安静地失败。当事情停止工作时,通常会出现问题(通常是配置问题或文件系统安全问题)。
您可能想尝试启用内部log4net调试。将此密钥保存在app.config的<appSettings>
元素中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
</configuration>
然后启动你的应用。 Log4net会发出一堆调试信息。它将写入System.Console和System.Diagnostics.Trace系统。您可以从附加的调试器捕获跟踪消息,也可以在app.config文件中添加跟踪侦听器。如果跟踪侦听器写入文件,请确保您的进程具有写访问权限,否则您将看不到任何内容:
<configuration>
...
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt"
/>
</listeners>
</trace>
</system.diagnostics>
...
</configuration>
您可以在此处连接number of different trace listeners,包括写入Windows事件系统的内容。
更多信息:
答案 1 :(得分:2)
没有消息来源,很难说。该应用程序是否也停止工作?如果是,请在您的申请中找到致命缺陷。
如果没有,从log4net JIRA判断,RollingFileAppender
存在很多问题(参见:log4net JIRA):
"RollingFileAppender stops logging intermittently when it tries to roll over the log file"
也许这是影响你的那些问题之一。