【发布时间】:2009-12-10 11:57:31
【问题描述】:
我们正在使用 log4net 进行服务器端日志记录。我们面临的问题是 FileAppender。这是 app.config 文件中的 log4net 部分:
<log4net xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<appender name="MainAppender" type="log4net.Appender.FileAppender">
<lockingMode type="log4net.Appender.FileAppender+MinimalLock" />
<file value="${TMP}\Shunra.Infra.Test.Host.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ERROR" />
<appender-ref ref="MainAppender" />
</root>
</log4net>
问题是当多个线程写入日志文件时,log4net 有时无法获取文件的锁,因为同时另一个线程正在记录。问题表现在 log4net 内部处理的第一次机会 IOException 中。
我不确定在这种情况下我们是否正确使用了 log4net,并希望获得有关如何改进其配置的建议。
谢谢。
【问题讨论】:
-
您能给我们展示一些记录日志的代码吗?
-
这真的是微不足道的。每当我们希望记录某些内容时,我们只需编写 LogManager.GetLogger(GetType()).Debug(...)