2

Log4net Smtpアペンダーを使用して電子メールの本文をカスタマイズするにはどうすればよいですか?本文にカスタムメッセージを追加したかった。

4

5 に答える 5

5

これに似たアペンダーを使用している場合

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
    <to value="to@domain.com" />
    <from value="from@domain.com" />
    <subject value="test logging message" />
    <smtpHost value="SMTPServer.domain.com" />
    <bufferSize value="512" />
    <lossy value="false" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message" />
    </layout>
</appender>

ログに記録する前に、StringBuilderを使用してメッセージをフォーマットできるはずです。

var sb = new StringBuilder();
sb.Append("Header");
sb.Append(Environment.NewLine);
sb.Append("Message");
...
var msg = sb.ToString();

ILog log = //resolve ILog
log.Debug(msg);

SmtpAppenderを検索するその他の構成サンプルはこちら

于 2011-12-14T15:59:56.167 に答える
5

独自のアペンダーを作成して、SmtpAppenderから継承できます。そこで、SendEmailなどのメソッドをオーバーライドできます。

class MySmtpAppender : SmtpAppender
{
    protected override void SendEmail(string messageBody)
    {
        string newmessageBody = messageBody + "...";
        base.SendEmail(newmessageBody);
    }
}

<appender name="MySmtpAppender" type="YourLib.MySmtpAppender">

このクラスにいくつかのプロパティを追加することもでき、それらを構成ファイルで使用できるようになります。

于 2011-12-14T16:06:33.287 に答える
3

SMTPアペンダーを使用する場合、メッセージ本文にはログイベントが含まれます。ログイベントは、アペンダーを構成するときに指定したレイアウトでフォーマットされます。

最もよく使用されるのはPatternLayoutであるため、このレイアウトのconventionPatternプロパティに入力したものはすべて、電子メールメッセージの本文に入ります。

したがって、次のようなことを行う必要があります。

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
    <to value="to@domain.com" />
    <from value="from@domain.com" />
    <subject value="test logging message" />
    <smtpHost value="SMTPServer.domain.com" />
    <bufferSize value="512" />
    <lossy value="false" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="Hello, we got an error in the app. here are the details:  %newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
    </layout>
</appender>
于 2011-12-14T16:02:37.820 に答える
2

たとえば、ヘッダーやフッターを追加することで、レイアウトレベルでカスタマイズできます。

<layout type="log4net.Layout.PatternLayout">
    <header value="[Header]&#13;&#10;" />
    <footer value="[Footer]&#13;&#10;" />
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
于 2011-12-14T16:02:35.683 に答える
1

ボディは、変換パターンを使用して制御されます(他のアペンダーと同様)。

<appender name="EmailAppender" type="log4net.Appender.SmtpAppender">
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%n%n%d{yyyy-MM-dd HH:mm:ss} %5p %10u %m" />
          </layout>
</appender>
于 2011-12-14T16:00:50.930 に答える