13

SMTP を使用して、log4net と Jira をブリッジしました。

現在、サイトが公開されているため、本番環境で多くの問題が発生した場合、Jira サーバーに何が起こるかを心配しています.

すでに Critical と Fatal でフィルタリングしていますが、log4net のアキュムレータ サービスか、繰り返される問題を特定して電子メールで送信されないようにする単純なフィルタのいずれかを確認したいと考えています。エラー報告コードを変更する必要がないことが望ましいため、構成ソリューションが最適です。

ログをデータベースにダンプしてから、別のリスナーを作成すると、スマートコードが(高価な)代替手段になると思います。

4

2 に答える 2

17

多分これはあなたの要件に十分です:

基本的に、特定の期間に送信される電子メールの数を制限します。これをニーズに合わせてカスタマイズするのは非常に簡単だと思います。特定の期間内にメッセージを破棄することさえできるようなことをしました:

public class SmtpThrottlingAppender : SmtpAppender
{
    private DateTime lastFlush = DateTime.MinValue;
    private TimeSpan flushInterval = new TimeSpan(0, 5, 0);

    public TimeSpan FlushInterval
    {
        get { return this.flushInterval; }
        set { this.flushInterval = value; }
    }

    protected override void SendBuffer(LoggingEvent[] events)
    {
        if (DateTime.Now - this.lastFlush > this.flushInterval)
        {
            base.SendBuffer(events);
            this.lastFlush = DateTime.Now;
        } 
    }
}

フラッシュ間隔は、他のアペンダーの通常の設定と同様に構成できます。

<flushInterval value="01:00:00" />
于 2010-03-09T15:35:17.013 に答える
4

Evaluator として log4net.Core.TimeEvaluator でプレーンなSmtpAppenderを使用することもできます。

5 分の間隔があり、00:00、00:01、および 01:00 にイベントがあるとします。

  • Stefan Egli の SmtpThrottlingAppender は、00:00 (イベント 1) と 01:00 (イベント 2 および 3) にメールを送信します。
  • TimeEvaluator を持つ SmtpAppender は、00:05 (イベント 1 と 2) と 01:05 (イベント 3) に電子メールを送信します。

どちらが必要かは、保証された遅延または潜在的に大きな遅延に悩まされているかどうかによって異なります。

SmptThrottlingAppender を TimeEvaluator と組み合わせようとしましたが、必要な動作を得ることができませんでした。新しい IAppender ではなく、新しい ITriggeringEventEvaluator を作成する必要があるのではないかと疑い始めています。

于 2012-07-10T13:31:55.190 に答える