Log4J & Email
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.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 :
//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=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 !
Recent Comments