log4netログレベルに基づくsmtpappenderの件名

Is it possible to configure log4net to have two smtp appenders - one that sends emails only when log level is >= WARN and second that sends everything, but never two on the same time.


  
  
  
  
  
  
  
    <threshold value="WARN"/>
  
  
    
  


  
  
  
  
        
  
    
  
  
    
        

私は私が持っているアプリケーション:

Log.Info("Importer is starting...");
//my logic
//if warn Log.Warn("Warning...");
Log.Info("Import finished");

だから私は常にINFOを使っています。今、私がWARNに遭遇すると、両方のメッセージが送信されています。私はもちろん、成功情報を持った人が送られてこなかったことを願っています。

0

2 答え

あなたのアペンダは、次のように最小値/最大値を持つことができます:






したがって、さまざまな範囲で異なるアペンダーを使用できます。私はこれがあなたのために働くはずだと思います。

0
追加された
これは動作しません
追加された 著者 Robert Brooker,
私の と等しいので、これはうまくいきません。より高いレベル
追加された 著者 christof,

私はlog4net SendBufferメソッドをオーバーライドすることによって問題を解決しました:

namespace MyProject
{
    public class SmtpAppenderInfoOnly : SmtpAppender
    {
        protected override void SendBuffer(log4net.Core.LoggingEvent[] events)
        {
            foreach (var loggingEvent in events)
            {
                if (loggingEvent.Level != Level.Info)
                    return;
            }

            base.SendBuffer(events);
        }
    }
}

そして設定ファイルで:


そうすれば、SendBufferがキャンセルされたときにSendMailメソッドは実行されません。

0
追加された