Расширить log4net SmtpAppender для динамического адреса электронной почты
Хорошо. Я создал собственный SmtpAppender для использования динамического адреса электронной почты.
Используя пример проекта, предоставленный с Log4net - мне удалось использовать динамический адрес электронной почты, как показано ниже
log4net.ThreadContext.Properties["ToProperty"] = "swapneel@stackoverlfow.com";
и в моем кастомном SMTPAppender
string mailMessageTo;
if (ToProperty == null)
{
mailMessageTo = "DoNotReply@StaockOverlfow.com" }
else
{
var subjectWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture);
ToProperty.Format(subjectWriter, loggingEvent);
mailMessageTo = subjectWriter.ToString();
}
этот код работает в примере приложения, но когда я пытаюсь использовать его в нашем " Проекте ", по какой-то причине не работает.
У меня есть 2 приложения в Log4net.config. EventLog работает как положено, но CustomSmtpAppender не отправляет никаких писем. Любое направление для решения этой проблемы.
1] <appender name ="EmailLogAppender1" type ="MY.Company.ProjectName.Appenders.CustomSmtpAppender,
TRS">
2] <appender name ="EventLogAppender" type="log4net.Appender.EventLogAppender" >
1 ответ
Решение
Я включил внутреннюю отладку log4net и увидел причину проблемы.
Add this to your Web.Config:
<appSettings>
<add key="log4net.Internal.Debug" value="true" />
</appSettings>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="c:\\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>