0

構成で SMTP ロガーを次のように構成しました。

<appender name="SmtpEndUserAppender" type="log4net.Appender.SmtpAppender">
                     <to value="someReciever@sjm.com"/>
                     <from value="serviceAccount@sjm.com"/>
                     <subject value="Error occured in the XML Conversion Utility"/>
                     <smtpHost value="smtp server name"/>
                     <bufferSize value="1024"/>
                     <lossy value="false"/>
                     <layout type="log4net.Layout.PatternLayout">
                           <conversionPattern value="%date{MM-dd-yyyy HH:mm:ss.ff} [%thread] %-5level %logger - %message%newline"/>
                     </layout>
              </appender>

問題は、メッセージが小さい場合は正常に送信されますが、アペンダーが長すぎるメッセージを見つけた場合、受信トレイにメールを受信せずにコードブロックを通過するだけです。

var log = LogManager.GetLogger(Constants.ENDUSEREMAILLOGGER);
log.Info(string.Format(Constants.EMAILERRORMESSAGETEMPLATE, unprocessedFile, ex.Message));

ex.message は、5000 行以上をループしてすべてのエラーを収集するときに文字列ビルダーを使用するため、非常に長くなることがあります (2000 行など)。

バッファサイズを増やす必要がありますか? なぜこの動作ですか?

4

1 に答える 1

0

短いメールが log.Error 経由で送信されているのに、大きなメールが log.Info を使用している可能性はありますか?

bufferSize は、電子メール経由で送信される前にバッファリングされるエラー以外のイベントの数です。つまり、log.Error を使用していない場合は、log.info を 1024 回呼び出すまで電子メールを受信せず、1024 のメッセージすべてを含む 1 つの電子メールを受信します。

しかし log.Error はバッファをフラッシュし、すぐに電子メールを送信します。

もう 1 つの可能性は、1024 メッセージすべてを含む電子メールが大きすぎるとして拒否されていることです。

于 2012-11-20T15:05:22.510 に答える