2017-01-10 24 views
0

私はlog4netを使用してさまざまな種類のメッセージを記録しています。 メッセージを記録するときに特定のユーザーに電子メールを送信するためにSmtpAppenderを追加しました。 しかし、私が達成したいのは、エラーまたは致命的なエラーが記録された場合にのみ電子メールを送信できることです。 web.configファイルの現在の設定に従うと、私は2つの電子メールを受け取ります.1つはエラー用、もう1つは残りのログ用です。 Global.asax.cs:SmtpAppenderを使用してエラーや致命的なエラーを記録するときにのみ電子メールを送信する

logger.Info("Info"); 
logger.Warn("Warning"); 
logger.Fatal("Fatal"); 
logger.Error("exception"); 

web.configファイル:

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"> 
    <to value="[email protected]" /> 
    <from value="[email protected]" /> 
    <subject value="test logging message" /> 
    <smtpHost value="*******" /> 
    <bufferSize value="512" /> 
    <lossy value="true" /> 
    <evaluator type="log4net.Core.LevelEvaluator"> 
     <threshold value="WARN"/> 
    </evaluator> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%newline%date [%thread] %-5level %logger- %message%newline%newline%newline" /> 
    </layout> 
</appender> 

答えて

0

私はちょうどSmtpAppenderにこのタグを追加する必要があり、解決策を見つけた:

<filter type="log4net.Filter.LevelRangeFilter"> 
    <levelMin value="ERROR" /> 
    <levelMax value="FATAL" /> 
</filter> 
0

使用してみてください:

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"> 
    ... 
    <threshold value="WARN"/> 
    ... 
</appender> 

(またはthreshold value="ERROR"あなたがエラーとFatallevelsする限定したいと言うので)ではなく、

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"> 
    ... 
    <evaluator type="log4net.Core.LevelEvaluator"> 
     <threshold value="WARN"/> 
    </evaluator> 
    ... 
</appender> 

log4netのマニュアルまたはthis message in the log4net user mailing listはその違いを説明しています。

+0

すべて – Claritta

+0

@clarittasafaで送信されたメール一切持っていないの結果 - あなたは正しいが、あなたのアペンダーが損失を被るように構成されているため、評価者が必要です。要件に応じて、lossy = falseを構成するか、評価者を追加することができます。 – Joe

関連する問題