繁体   English   中英

使用Log4net Smtp appender自定义电子邮件正文

[英]Customizing the body of the email using Log4net Smtp appender

如何使用Log4net Smtp appender自定义电子邮件正文? 我想向身体添加自定义消息。

鉴于你使用类似的appender

<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

您可以创建自己的appender并从SmtpAppender继承它。 在那里你可以覆盖SendEmail等方法。

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

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

您还可以向此类添加一些额外的属性,您将能够在配置文件中使用它们。

当您使用SMTP Appender时,邮件正文包含日志事件,该事件由您在配置appender时指定的布局进行格式化。

最常用的是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>

您可以在布局级别进行自定义,例如通过添加页眉和/或页脚:

<layout type="log4net.Layout.PatternLayout">
    <header value="[Header]&#13;&#10;" />
    <footer value="[Footer]&#13;&#10;" />
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>

使用转换模式(与任何其他appender一样)控制正文。

<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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM