命令log4net执行其appender

时间:2010-12-12 15:04:23

标签: .net log4net

假设我的.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;中定义的顺序相同的顺序完成元件?

2 个答案:

答案 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>