lucamilan
1/5/2016 - 1:39 PM

CustomAppender.cs

<appender name="SmtpAppender" type="Your Class,Your Namespace">
      <threshold value="WARN"/>
      <to value="list@yourcompany.com" />
      <from value="website@yourcompany.com" />
      <subject value="website Errors" />
      <smtpHost value="your host" />
      <bufferSize value="1" />
      <lossy value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n" />
      </layout>
    </appender>

 <logger name="YourLogger">
      <level value="INFO"/>
      <encoding value="utf-8"/>
      <appender-ref ref="SmtpAppender"/>
</logger>
// Getting a reference to the  logger in code.
static ILog emailLog = LogManager.GetLogger("YourLogger");

//Using the logger
emailLog.Error("message",exc);


public class CustomAppender : log4net.Appender.SMTPAppender
    {
        protected override void SendBuffer(log4net.helpers.CyclicBuffer buffer)
        {
            base.SendBuffer(buffer);
        }
 
        protected override void SendBuffer(log4net.spi.LoggingEvent[] events)
        {
            StringBuilder stringBuilder = new StringBuilder();
            string header = this.Layout.Header;
            if (header != null)
            {
                stringBuilder.Append(header);
            }
 
            string hostName = SystemInfo.HostName;
            for (int i = 0; i < (int)events.Length; i++)
            {
                if (events[i].Properties["log4net:HostName"] == null)
                {
                    events[i].Properties["log4net:HostName"] = hostName;
                }
                stringBuilder.Append(base.RenderLoggingEvent(events[i]));
            }
            header = this.Layout.Footer;
            if (header != null)
            {
                stringBuilder.Append(header);
            }
 
            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(this.From, this.To, this.Subject, stringBuilder.ToString());
 
            using (System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("yourhost",someport)
            {
                client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                client.UseDefaultCredentials = true;
                client.Send(message);
            }
        }
    }