在我的应用程序中,我包含3个库:
Log4net
Common.Logging.log4net
Quartz (use Common.Logging.log4net to write logs)
这是我的log4net部分配置:
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="FileAppender" />
</root>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="quartz.log" />
<appendToFile value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
</log4net>
一切正常但是有关于XmlConfigurator.Configure()的问题。此命令按顺序调用2次:
- 在init应用程序时调用 - &gt;我写日志。
- 启动Quartz时调用。 (我验证了何时阅读源代码Common.Logging.log4net) - &gt; Quartz写日志。
Quartz启动后,由于XmlConfigurator.Configure(),我的日志被清除了。这意味着在调用此命令时,将清除日志。我不想在此过程中名为的命令后清除我的日志。
我可以获取源dll Common.Logging.log4net来更改代码以检查log4net是否真的已配置,如果没有则调用XmlConfigurator.Configure()。但我不喜欢这个解决方案。
请帮我找到DLL库中没有更改代码的其他解决方案。
更多信息:http://neilkilbride.blogspot.com/2008/04/configure-log4net-only-once.html
答案 0 :(得分:2)
您已配置文件追加器在重新配置log4net时创建新的日志文件:
<appendToFile value="false" />
将其更改为:
<appendToFile value="true" />
即使您多次拨打XmlConfigurator.Configure()
,日志消息也会附加在文件末尾。