2012-06-27 93 views
2

我的应用程序使用Log4net写入事件查看器。下面是我的程序的App.config文件的log4net的部分:Log4net停止写入事件日志

<log4net> 
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" > 
     <applicationName value="CarSystem" /> 
     <logName value="CarSystemLog" /> 
     <threshold value="DEBUG" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="EventLogAppender" /> 
    </root> 
</log4net> 

现在,这些设置都工作正常,直到前天约下午12:30。突然间(当我需要查看日志中的消息时),它停止写入日志文件。

自定义事件日志在查看器中。我今天重新启动了机器,但仍然没有新的东西进入日志。我将最大日志大小增加到10880 KB。

为什么log4net不再写入我的日志文件?

+2

是否有人或某事更改了正在写入日志文件的文件夹的权限? –

+0

不是我的知识。这是我的开发工作站,我是一个管理员。我知道我没有改变它。我必须检查是否有人通过某种短信工具做了些什么,但让我们假装答案是否定的。 –

+0

那么,如果你能排除环境问题,想到的最明显的事情就是未处理的异常会阻止日志代码执行。鉴于“正当我需要审查......”声明时,它使我相信某处出了问题。如果你知道日志代码正在执行,我不知道。 –

回答

2

我又回到了log4net的文档,并注意到这样一句话:

当务之急是要进行日志记录调用尽早应用程序启动过程中,当然之前的任何外部组件已经被加载并被调用。

嗯,我曾在我的AssemblyInfo.cs的XMLConfiguration中的属性,并在代码中LogManager.GetLogger的电话,但它是一个调用后,开始我已经加入到我的WPF的一个应用的App对象的构造函数监控对象。我意识到,当我阅读本声明并查看代码后,添加了此调用后,日志记录停止了。

所以我把电话转到LogManager.GetLoggerApp构造函数中的第一个语句,然后再次开始记录。 Hallelieuia!

感谢您的帮助和建议。

+0

没有为我工作 – WSK

11

与其寻找解决方案,更好地找到原因。

我建议你启用log4net的内部调试日志记录到文件(任何文件),它会转储它的麻烦在那里。当我的日志文件(应该与事件日志相同的东西)没有出现时,我用了很多次。如何配置here

快速步骤:

  • 添加到您的app.config:
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
</configuration> 
  • 这也添加到配置(configuration部分)。
<system.diagnostics> 
    <trace autoflush="true"> 
     <listeners> 
       <add 
       name="textWriterTraceListener" 
       type="System.Diagnostics.TextWriterTraceListener" 
       initializeData="C:\tmp\log4net.txt" /> 
     </listeners> 
    </trace> 
</system.diagnostics> 

与权限或那么无论将被记录到跟踪文件中的任何问题。

+0

我试着进行这些更改,但在调试输出窗口中没有关于log4net中的错误的消息。我现在正试图解决其他问题,我会回头去看看,但缺乏有用的信息令人沮丧。 –

+0

@TonyVitabile:开始时必须至少有一些初始化行。你可以仔细检查配置吗? –

+0

是的,有初始化线。我的意思是说没有任何错误消息或任何有用的信息来解释为什么消息不会进入事件日志。 –