расширить log4net SmtpAppender для динамического адреса электронной почты

В порядке. Я создал собственный SmtpAppender для использования динамического адреса электронной почты To.

Используя пример проекта, предоставленный с помощью Log4net, мне удалось использовать динамический адрес электронной почты, как показано ниже.

log4net.ThreadContext.Properties["ToProperty"] =  "[email protected]";

и в моем пользовательском SMTPAppender

        string mailMessageTo;
        if (ToProperty == null)
        {
            mailMessageTo = "[email protected]"            }
        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" >

person swapneel    schedule 06.02.2012    source источник


Ответы (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>
person swapneel    schedule 06.02.2012