收听Log.Fatal(...)消息

时间:2014-01-27 10:32:59

标签: c# log4net

我有一个应用程序,包含所有级别的大量日志记录。我希望为Log.Fatal调用添加一些自定义行为。没有构建自定义Appender可以做到吗?

我试过了:

    log4net.Util.LogLog.LogReceived += LogLog_LogReceived;        

    private void LogLog_LogReceived(object source, LogReceivedEventArgs e)
    {

    }

LogReceived似乎没有被解雇。它可能不打算以这种方式使用。不确定。

有没有人有想法?

1 个答案:

答案 0 :(得分:4)

我意识到我的问题可能是可行的(某种程度上),但根本不是明智的。创建一个自定义appender是如此简单,以至于它可以使与我的问题相关的任何内容与日志框架的需求变得愚蠢。对不起,我明确地询问了如何在没有appender的情况下这样做。这太愚蠢了。

我最后将它添加到我的程序集中:

namespace MyAssembly
{
    public class MyAppenderClass: AppenderSkeleton
    {
        protected override void Append(LoggingEvent loggingEvent)
        {
            // something, something, dark side.
        }
    }  
}

并添加这段配置:

<root>
  <!-- Set the log level for the entire application here -->
  <level value="DEBUG" />
  <appender-ref ref="MyAppender" />
</root>    

<appender name="MyAppender" type="MyAssembly.MyAppenderClass">
  <!-- the threshold is to make sure it starts logging FATAL and up (so only FATAL really) -->
  <threshold value="FATAL" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="[%date - %message%newline%exception" />
  </layout>
</appender>

就是这样。可爱的log4net。