当滚动样式设置为日期时,log4net 有时不会滚动日志文件

Bas*_*ski 4 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>
Run Code Online (Sandbox Code Playgroud)

文件有时根据日期滚动,有时不滚动,当文件不滚动时,日志记录也会停止。有人能帮我找出原因吗?

Nic*_*rey 5

log4Net 被设计为静静地失败。当事情停止工作时,通常会出现问题(最常见的是配置问题或文件系统安全问题)。

您可能想尝试启用内部 log4net 调试。将此密钥放入<appSettings>您的 app.config 元素中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

然后启动你的应用程序。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>
Run Code Online (Sandbox Code Playgroud)

您可以在此处连接许多不同的跟踪侦听器,包括写入 Windows 事件系统的跟踪侦听器。

更多这里: