假设我的.log4net.config文件中有以下appender引用配置:
<root>
<level value="ALL"/>
<appender-ref ref="ColoredConsoleAppender" />
<appender-ref ref="EventLogAppender"/>
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="MyCustomAppender" />
</root>
log4net是否在一个线程上串行调用这些appender(即调用应用程序用来调用ILog。*方法的相同线程)。如果是这样,它会调用每个appender的顺序是什么?它是否以与&lt; root&gt;中定义的顺序相同的顺序完成元件?
答案 0 :(得分:2)
根据这个link(在自定义Appenders:添加目标中的部分),log4net按照它们在配置文件中出现的顺序执行Appenders。此外,Appender同步执行。我不知道作者是否是log4net专家,但文章阅读得很好。
答案 1 :(得分:0)
虽然我找不到链接中所述内容的任何独立确认,http://www.devx.com/dotnet/Article/32096/1954,无论是在log4net网站还是通过进一步的谷歌搜索,我都改变了我的appender在配置文件中的顺序如下所示基于文章。
也许根元素是我在log4net元素中更改了appender元素顺序的关键元素
我的理由是,在严重故障情况下,记录到Windows事件日志比写入文件更有成功(并且可以说这是更重要的信息?)
<log4net threshold="ALL">
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
<!-- Make stuff go here -->
</appender>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<!-- Make stuff go here -->
</appender>
<root>
<appender-ref ref="EventLogAppender" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>