Log4J & Email




written by Marco Ferretti on November 17, 2011, at 10:10 AM

en it

Log4J arriva con tutta una serie di appender tra cui un SMTP appender che si rivela essere drammaticamente utile quando serve inviare un alert da un sistema senza che l'interessato debba controllare a mano i log; ecco due essempi di utilizzo :

  • Uso di una connessione non "sicura"
  • Uso di una connessione criptata come SSL o TLS.

Uso di una connessione non "sicura"

Per usare un server SMTP semplice e non protetto tutto quello che si deve fare e' configurare log4j.properties in modo che contenga qualcosa tipo questo :

log4j.appender.SENDMAIL = org.apache.log4j.net.SMTPAppender
log4j.appender.SENDMAIL.To = A_USER@SOMEWHERE.SOMETHING
log4j.appender.SENDMAIL.From = system.alert@fermasoft.com
log4j.appender.SENDMAIL.SMTPHost = some.unsecured.smtp
#alcuni server non usano una porta standard : cambiare il valore
log4j.appender.SENDMAIL.SMTPPort = 25
log4j.appender.SENDMAIL.SMTPDebug = true
log4j.appender.SENDMAIL.SMTPPassword=XXXXXXXX
log4j.appender.SENDMAIL.SMTPUsername=XXXXXXXX
# il numero massimo di eventi da inserire in un ciclo di invio
log4j.appender.SENDMAIL.BufferSize = 1
log4j.appender.SENDMAIL.LocationInfo = true
log4j.appender.SENDMAIL.Subject = "System Error"
log4j.appender.SENDMAIL.layout = org.apache.log4j.PatternLayout
log4j.appender.SENDMAIL.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n

and the job is done

Uso di una connessione criptata

Il problema, qui, e' che se il vostro server SMTP usa una connessione TLS o SSL allora aggiungere le seguenti proprieta' di javax.mail.Session :

System.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
//questo valore dipende dal server SMTP
System.setProperty("mail.smtp.socketFactory.port", "465");
System.setProperty("mail.smtp.socketFactory.fallback", "false");

in modo che questo tipo di configurazione di log4j possa funzionare :

log4j.appender.SMTP.layout=org.apache.log4j.SimpleLayout
log4j.appender.SMTP=org.apache.log4j.net.SMTPAppender
# il numero massimo di eventi da inserire in un ciclo di inviolog4j.appender.SMTP.BufferSize=1
log4j.appender.SMTP.From=system.alert@fermasoft.com
log4j.appender.SMTP.LocationInfo=true
log4j.appender.SMTP.SMTPDebug=true
log4j.appender.SMTP.SMTPHost=smtp.gmail.com
log4j.appender.SMTP.SMTPPassword=PASSWORD
log4j.appender.SMTP.SMTPUsername=USER@gmail.com
log4j.appender.SMTP.Subject=System Error
log4j.appender.SMTP.To=A_USER@SOMEWHERE.SOMETHING

Happy logging !

Leave a comment

Name (required)
E-mail (required, will not be published)
Website
Comment

Enter value: Captcha