如何使用 Log4net Smtp appender 自定义电子邮件正文?我想在正文中添加自定义消息。
问问题
4171 次
5 回答
5
您可以创建自己的 appender 并从 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 回答
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 回答
3
当您使用 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>
于 2011-12-14T16:02:37.820 回答
2
您可以在布局级别进行自定义,例如通过添加页眉和/或页脚:
<layout type="log4net.Layout.PatternLayout">
<header value="[Header] " />
<footer value="[Footer] " />
<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 回答