5

特定のログレベルに達した場合にのみ電子メールを受信するように log4net SmtpAppender を構成しようとしていますが、すべてのレベルの最後の 10 行が含まれています。これは私の設定です:

<appender name="EmailAppender" type="SmtpSubjectLayoutAppender">

  <evaluator type="log4net.Core.LevelEvaluator">
    <threshold value="WARN"/>
  </evaluator>

  <bufferSize value="10" />
  <lossy value="false" />

  ...
</appender>

私はこのコードでそれを実行しています:

for (var i = 1; i <= 30; i++)
{
    logger.Info("This is just a test message " + i);
}

logger.Error("Error message");

問題は、最終的に 3 通の電子メールを受信することです。2 通にはすべてのINFOログが記録され、1 通には の前に発生した最後の数行が含まれていERRORます。

[2012-07-27 18:59:55.657][INFO ][Chase][tid=14972] This is just a test message 23
[2012-07-27 18:59:55.659][INFO ][Chase][tid=14972] This is just a test message 24
[2012-07-27 18:59:55.661][INFO ][Chase][tid=14972] This is just a test message 25
[2012-07-27 18:59:55.662][INFO ][Chase][tid=14972] This is just a test message 26
[2012-07-27 18:59:55.664][INFO ][Chase][tid=14972] This is just a test message 27
[2012-07-27 18:59:55.666][INFO ][Chase][tid=14972] This is just a test message 28
[2012-07-27 18:59:55.667][INFO ][Chase][tid=14972] This is just a test message 29
[2012-07-27 18:59:55.670][INFO ][Chase][tid=14972] This is just a test message 30
[2012-07-27 18:59:55.671][ERROR][Chase][tid=14972] Error message

WARN 以上が発生した場合に最後の 10 行の電子メールを受信するようにアペンダーを構成するにはどうすればよいですか? それ以外の場合はバッファーを無視しますか?

4

3 に答える 3

5

非可逆値を true に設定する必要があります。

<lossy value="true" />

構成では、log4net は、エラーがログに記録されたときだけでなく、バ​​ッファーがいっぱいになったときにもバッファーを書き込みます。lossy フラグは、必要に応じてメッセージを破棄するように log4net に指示します。

于 2012-07-30T10:00:07.200 に答える
0

私はこれを試してみます:

log4net でカスタム レベルをフィルター処理するにはどうすればよいですか?

フィルタリングは、他の「シナリオ」でうまく機能します。

于 2012-07-28T19:14:41.410 に答える