2014-01-27 83 views
1

我有一個應用程序與大量的所有級別的日誌記錄。我希望給Log.Fatal調用添加一些自定義行爲。有可能沒有建立一個自定義的Appender?聽Log.Fatal(...)消息

我嘗試這樣做:

log4net.Util.LogLog.LogReceived += LogLog_LogReceived;   

    private void LogLog_LogReceived(object source, LogReceivedEventArgs e) 
    { 

    } 

LogReceived似乎並沒有被解僱。也許不打算這樣使用。不確定。

有沒有人有想法?

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+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。

+0

如果在沒有appender的情況下可以做到這一點,或者可以在代碼中添加appender會很好。我使用的是第三方組件,它根本沒有提供任何進度信息,但是它記錄了它正在做的事情,所以這是我現在獲得任何進度信息的唯一方法。 – neslekkiM