3

我有一个使用 log4net 进行日志记录的 Windows C# 应用程序。这是记录器的配置方式:

 <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>

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

4

2 回答 2

4

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

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

<?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>

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

更多在这里:

于 2011-01-27T18:13:57.777 回答
2

没有来源,很难说。应用程序是否也停止工作?如果是,请找出您的应用程序中的致命缺陷。

如果不是,从 log4net JIRA 来看,有很多问题RollingFileAppender(参见:log4net JIRA):

“RollingFileAppender 在尝试翻转日志文件时间歇性地停止记录”

“具有 rollingStyle="Date" 和 maximumFileSize 的 RollingFileAppender 不能同时工作。”

也许这是伤害你的那些问题之一。

于 2011-01-27T17:49:40.547 回答