SMTPAppender可以支持将日志以邮件形式发送,一般网上的例子只提供了无需认证的简单情形,所以本人特地写了本文,介绍如何配置使得其可以发送SMTP认证邮件。
先做如下假设
smtp服务器:smtp.sina.com,
useremail: youraccount@sina.com
password: yourpassword
假定我们希望对所有日志级别为ERROR的日志通过上述邮件服务器发送邮件到:admin@yourcompany.com
在log4j.properties中加入如下一段,每段配置上的说明文字(黑色)不是文件内容:
### send error through email.
# log4j的邮件发送appender,如果有必要你可以写自己的appender
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
#发送邮件的门槛,仅当等于或高于ERROR(比如FATAL)时,邮件才被发送
log4j.appender.MAIL.Threshold=ERROR
#邮件缓冲区大小
log4j.appender.MAIL.BufferSize=10
#发送邮件的邮箱帐号
log4j.appender.MAIL.From=youraccount@sina.com
#SMTP邮件发送服务器地址
log4j.appender.MAIL.SMTPHost=smtp.sina.com
#SMTP发送认证的帐号名
log4j.appender.MAIL.SMTPUsername=youraccount
#SMTP发送认证帐号的密码
log4j.appender.MAIL.SMTPPassword=yourpassword
#是否打印调试信息,如果选true,则会输出和SMTP之间的握手等详细信息
log4j.appender.MAIL.SMTPDebug=false
#邮件主题
log4j.appender.MAIL.Subject=Log4J Error Message
#发送到什么邮箱,如果要发送给多个邮箱,则用逗号分隔;
#如果需要bcc给某人,则加入下列行:
# log4j.appender.MAIL.Bcc=aaa@bbb.ccc
log4j.appender.MAIL.To=admin@yourcompany.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
SMTPAppdder经常会出现邮件不能发送的故障,可以通过检查下列途径进行检查:
0.首先打开 log4j.appender.MAIL.SMTPDebug选项,将其设置为true
1.检查 防火墙是否屏蔽对smtp服务器以及25端口的访问?
2.如果出现AuthenticationException,则检查是否发送帐号的用户和密码都正确;
其次检查你的邮箱是否支持非web方式发送邮件。比如某个特定时间之后注册的163邮箱就不能通过stmp服务器直接发送邮件(只能通过web界面发)。
3.如果出现Must issue a STARTTLS command,则你不得不放弃使用这个SMTP服务器发送邮件,因为SMTPAppender不支持SSL连接的SMTP邮件发送。典型的例子就是google mail。
先做如下假设
smtp服务器:smtp.sina.com,
useremail: youraccount@sina.com
password: yourpassword
假定我们希望对所有日志级别为ERROR的日志通过上述邮件服务器发送邮件到:admin@yourcompany.com
在log4j.properties中加入如下一段,每段配置上的说明文字(黑色)不是文件内容:
### send error through email.
# log4j的邮件发送appender,如果有必要你可以写自己的appender
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
#发送邮件的门槛,仅当等于或高于ERROR(比如FATAL)时,邮件才被发送
log4j.appender.MAIL.Threshold=ERROR
#邮件缓冲区大小
log4j.appender.MAIL.BufferSize=10
#发送邮件的邮箱帐号
log4j.appender.MAIL.From=youraccount@sina.com
#SMTP邮件发送服务器地址
log4j.appender.MAIL.SMTPHost=smtp.sina.com
#SMTP发送认证的帐号名
log4j.appender.MAIL.SMTPUsername=youraccount
#SMTP发送认证帐号的密码
log4j.appender.MAIL.SMTPPassword=yourpassword
#是否打印调试信息,如果选true,则会输出和SMTP之间的握手等详细信息
log4j.appender.MAIL.SMTPDebug=false
#邮件主题
log4j.appender.MAIL.Subject=Log4J Error Message
#发送到什么邮箱,如果要发送给多个邮箱,则用逗号分隔;
#如果需要bcc给某人,则加入下列行:
# log4j.appender.MAIL.Bcc=aaa@bbb.ccc
log4j.appender.MAIL.To=admin@yourcompany.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
SMTPAppdder经常会出现邮件不能发送的故障,可以通过检查下列途径进行检查:
0.首先打开 log4j.appender.MAIL.SMTPDebug选项,将其设置为true
1.检查 防火墙是否屏蔽对smtp服务器以及25端口的访问?
2.如果出现AuthenticationException,则检查是否发送帐号的用户和密码都正确;
其次检查你的邮箱是否支持非web方式发送邮件。比如某个特定时间之后注册的163邮箱就不能通过stmp服务器直接发送邮件(只能通过web界面发)。
3.如果出现Must issue a STARTTLS command,则你不得不放弃使用这个SMTP服务器发送邮件,因为SMTPAppender不支持SSL连接的SMTP邮件发送。典型的例子就是google mail。