我的应用程序使用Log4net写入事件查看器。这是我程序的App.config文件的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不再写入我的日志文件?
答案 0 :(得分:11)
而不是寻找解决方案,更好地找到原因。
我建议您启用log4net的内部调试日志记录到文件(任何文件),它会在那里转储它的麻烦。当我的日志文件(事件日志应该是相同的东西)没有显示时,我已经多次使用过这个。
有关如何配置here的说明。
快速步骤:
<?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>
任何有权限或其他问题都会记录到跟踪文件中。
答案 1 :(得分:2)
我回到Log4Net文档并注意到这句话:
必须在应用程序启动期间尽早进行日志记录调用,当然在加载和调用任何外部程序集之前。
好吧,我在AssemblyInfo.cs中有XmlConfiguration属性,在代码中调用了LogManager.GetLogger
,但是在调用后我已经添加到我的WPF应用程序的构造函数{ {1}}对象。我意识到在我阅读此声明并审阅代码后添加此调用后,日志记录停止了。
所以我将调用移动到App
成为LogManager.GetLogger
构造函数中的第一个语句,并再次开始记录。 Hallelieuia!
感谢您的帮助和建议。