javaspringlog4jspring-bootsmtpappender

Sending log to email using log4j SMTPAppender


I have a Spring Boot application. I'm trying to send log to mail using SMTPAppender, but I don't get any mails. I've managed to use log4j for ConsoleAppender and RollingFileAppender, so I guess I have log4j added properly, and the file with log4j properties is visible.

Here is my log4j.properties file:

log4j.rootLogger = info, email, stdout, file

log4j.appender.email=org.apache.log4j.net.SMTPAppender
log4j.appender.email.SMTPHost=smtp.google.com
log4j.appender.email.SMTPUsername=xyz@gmail.com
log4j.appender.email.SMTPPassword=abc123
log4j.appender.email.From=xyz@gmail.com
log4j.appender.email.To=xyz@gmail.com
log4j.appender.email.Subject=Log
log4j.appender.email.BufferSize=1
log4j.appender.email.EvaluatorClass=TriggerLogEvent
log4j.appender.email.layout=org.apache.log4j.PatternLayout
log4j.appender.email.layout.ConversionPattern=%m

#------------------------------------------------------------------------------------------

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

#------------------------------------------------------------------------------------------

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=mylog.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Solution

  • I found a important piece from the documentation about SMTPAppender.

    By default, an email message will be sent when an ERROR or higher severity message is appended. The triggering criteria can be modified by setting the evaluatorClass property with the name of a class implementing TriggeringEventEvaluator, setting the evaluator property with an instance of TriggeringEventEvaluator or nesting a triggeringPolicy element where the specified class implements TriggeringEventEvaluator

    Also, you can't use "smtp.google.com" - it should be smtp.gmail.com You should use GmailSMTPAppender, the details are here - http://www.tgerm.com/2010/05/log4j-smtpappender-gmail-custom.html