简体   繁体   English

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

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

How do I customize the body of the email using Log4net Smtp appender? 如何使用Log4net Smtp appender自定义电子邮件正文? I wanted to add custom message to the body. 我想向身体添加自定义消息。

Given you are using an appender similar this 鉴于你使用类似的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>

You should be able to format the message using StringBuilder before logging: 在记录之前,您应该能够使用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);

More config samples here search for SmtpAppender 这里有更多配置示例搜索SmtpAppender

You can create your own appender and inherit it from SmtpAppender. 您可以创建自己的appender并从SmtpAppender继承它。 There you can override such methods as SendEmail and so on. 在那里你可以覆盖SendEmail等方法。

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

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

You can also add some extra properties to this class and you will be able to use them in your config file. 您还可以向此类添加一些额外的属性,您将能够在配置文件中使用它们。

When you use an SMTP Appender the message body contains the log event, Which is formatted by the layout you specify when you configure the appender. 当您使用SMTP Appender时,邮件正文包含日志事件,该事件由您在配置appender时指定的布局进行格式化。

The most used one is PatternLayout so whatever you put in this layout's conventionPattern property will go into the email message body. 最常用的是PatternLayout,因此无论你放入这个布局的conventionPattern属性,都将进入电子邮件消息体。

so you should do something like this: 所以你应该做这样的事情:

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

You can customize at layout level for example by adding an header and/or a footer: 您可以在布局级别进行自定义,例如通过添加页眉和/或页脚:

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

The body is controlled using a conversion pattern (like any other appender). 使用转换模式(与任何其他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