Log4net con Gmail
Publicado por Miguel Gonzalez en 23 Diciembre 2008
Como el servidor de correo de gmail tiene ssl tenemos que realizar unos ajustes en una clase personalizada para tal fin. Para esto vamos a heredar de log4net.Appender.SmtpAppender para agregar estas nuevas caracteristicas. De esta forma nace la clase MyApp.SmtpSslAppender que usaremos siempre que queramos enviar nuestro logs atraves de una cuenta gmail.
public class SmtpSslAppender : log4net.Appender.SmtpAppender
{
private bool m_enableSsl = true;
public bool EnableSsl
{
get{return m_enableSsl;}
set{this.m_enableSsl = value;}
}
protected override void SendEmail(string messageBody) {
SmtpClient smtpClient = new SmtpClient();
if( SmtpHost != null & SmtpHost.Length > 0 ){
smtpClient.Host = SmtpHost;
}
smtpClient.Port = Port;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = EnableSsl;
if( Authentication == SmtpAuthentication.Basic ){
smtpClient.Credentials = new System.Net.NetworkCredential(Username, Password);
}else if( Authentication == SmtpAuthentication.Ntlm ){
smtpClient.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
}
MailMessage mailMessage = new MailMessage();
mailMessage.Body = messageBody;
mailMessage.From = new MailAddress(From);
mailMessage.To.Add(To);
mailMessage.Subject = Subject;
mailMessage.Priority = Priority;
smtpClient.Send(mailMessage);
}
}
A continuacion se ve como dentro del web.config se hace uso de esta nueva clase.
<appender name=”SmtpSslAppender” type=”MyApp.SmtpSslAppender”>
<to value=”xxx@gmail.com” />
<from value=”yyy@gmail.com” />
<subject value=”LoggerName” />
<smtpHost value=”smtp.gmail.com” />
<bufferSize value=”1″ />
<port value=”587″ />
<lossy value=”false” />
<authentication value=”Basic” />
<userName value=”usuario” />
<password value=”clave” />
<layout type=”log4net.Layout.PatternLayout”>
<conversionPattern value=”%newline%date [%thread] %-5level %logger [%property{NDC}] – %message%newline%newline%newline” />
</layout>
<filter type=”log4net.Filter.LevelRangeFilter”>
<levelMin value=”FATAL”/>
<levelMax value=”FATAL”/>
</filter>
</appender>
Seba escribió
Muy buen articulo, me va a ser muy util. Gracias