2017-03-29 6 views
1

後に電子メールを送信します(それはSmtpExtendedAppenderの目的だが、保存されたすべてのメッセージを反復処理)私はそれらにアクセスする方法がわかりません。log4netの - のSMTPアペンダは、私だけが唯一のHTMLテーブルとして書かれていた</strong><strong>100エラー後に電子メールを送信したいと思います100のエラー

これは私のapp.configです:

<appender name="SmtpAppender" type="log4net.Appender.SmtpExtendedAppender"> 
     <authentication value="Basic" /> 
     <password value="xxxxxx"/> 
     <username value="xxxxxxxx"/> 
     <from value="[email protected]" /> 
     <to value="[email protected]" /> 
     <smtpHost value="smtp.gmail.com" /> 
     <isBodyHtml value="true" /> 
     <bufferSize value="100" /> 
     <EnableSsl value="true"/> 
     <subject value="test logging message" /> 
     <lossy value="true" /> 
     <evaluator type="log4net.Core.LevelEvaluator"> 
      <threshold value="WARN"/> 
     </evaluator> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date{ABSOLUTE} [%logger]%newlineUsername: %property{username}%newline%level - %message%newline%exception" /> 
     </layout> 
    </appender> 

は、これは私のコンソールアプリケーションです:

static void Main(string[] args) 
     { 
      Console.WriteLine("hello world"); 

      log.Error("This is my first error message"); 

      log.Error("This is my second error message"); 

      Console.ReadLine(); 
     } 

私は完全に私はそれを価値を与えたにもかかわらず、log4netのバッファサイズがどのように動作するかを理解していないです100の場合は、コンソールアプリケーションを実行するたびに2つの電子メールを送信します。

このアプリケーションを50回実行して100エラーになる場合は、それらを蓄積して1回の電子メールで送信できますか?

+0

私はそうは思わない - アプリケーションが終了すると、アペンダーが終了し、バッファーがフラッシュされ、電子メールが送信されます。しきい値に達するまで、ログイベントを保存するために、ある種のバッキングストレージを持つようにアペンダーを拡張する必要があります。 – stuartd

+0

@stuartdあなたは 'cache'や' session'にメッセージを格納するような意味ですか? –

+0

メッセージを失う準備ができていない限り、永続ストレージを使用することをお勧めします。 – stuartd

答えて

2

これは不可能です。アペンダーは、アプリケーションの複数のインスタンスでは動作しません。アプリケーションを再起動するたびに、すべてのバッファが空になります。

関連する問題