Настройка тела письма с помощью приложения Sm4p Log4net
Как настроить тело письма с помощью приложения Sm4p Log4net? Я хотел добавить пользовательское сообщение в тело.
5 ответов
Учитывая, что вы используете подобный 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-приложение, тело сообщения содержит событие журнала, которое форматируется в соответствии с макетом, который вы указываете при настройке приложения.
Наиболее используемым является 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] " />
<footer value="[Footer] " />
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
Тело контролируется с помощью шаблона преобразования (как и любой другой аппендер).
<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>