当rollingstyle设置为date时,log4net有时不会滚动日志文件

时间:2011-01-27 17:32:55

标签: log4net log4net-configuration

我有一个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>

有时会根据日期滚动文件,有时则不会,当文件未滚动时,日志记录也会停止。任何人都可以帮我找出原因吗?

2 个答案:

答案 0 :(得分:4)

log4Net旨在安静地失败。当事情停止工作时,通常会出现问题(通常是配置问题或文件系统安全问题)。

您可能想尝试启用内部lo​​g4net调试。将此密钥保存在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"

"RollingFileAppender with rollingStyle="Date" and maximumFileSize both are not working Simultaneously."

也许这是影响你的那些问题之一。