Настройка тела письма с помощью приложения Sm4p Log4net - PullRequest
2 голосов
/ 14 декабря 2011

Как настроить тело письма с помощью приложения Sm4p Log4net? Я хотел добавить собственное сообщение в тело.

Ответы [ 5 ]

5 голосов
/ 14 декабря 2011

Вы можете создать свой собственный appender и унаследовать его от SmtpAppender.Там вы можете переопределить такие методы, как SendEmail и так далее.

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

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

Вы также можете добавить некоторые дополнительные свойства в этот класс, и вы сможете использовать их в своем конфигурационном файле.

5 голосов
/ 14 декабря 2011

Если вы используете аппендер, похожий на этот

<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

3 голосов
/ 14 декабря 2011

Когда вы используете SMTP 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>
2 голосов
/ 14 декабря 2011

Вы можете настроить на уровне макета, например, добавив заголовок и / или нижний колонтитул:

<layout type="log4net.Layout.PatternLayout">
    <header value="[Header]&#13;&#10;" />
    <footer value="[Footer]&#13;&#10;" />
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
1 голос
/ 14 декабря 2011

Тело управляется с помощью шаблона преобразования (как и любой другой аппендер).

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