admin 发表于 2016-8-25 14:50

log4j配置邮件发送

log4j为java提供记录日志文件的包,提供了多种方式记录,包括终端(Console),文件(File),数据库(JDBC),邮件(SMTP)等等。本来系统中日志记录以及警报是用的elk系统,但是这只是一个小项目,然后就用了log4j自带的邮件发送。使用方法
1,导入需要的3个包
log4j-1.2.15.jar
mail.jar
activation.jar

要使用log4j必须使用到“log4j-1.2.15.jar”,推荐用14以上版本,因为版本低于log4j-1.2.14.jar不支持SMTP认证,如果发送到邮件时,并且这个邮件服务商是需要认证的(也就是说需要账号和密码),需要自己封装这个功能,不过现在用的15次修订版,已经封装进这个功能,可以直接拿来用了。log4j.properties配置:log4j.rootLogger=info,stdout,MAIL
#控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=|%d{yyyy-MM-dd HH:mm:ss:SSS}|%m%n
#info日志
log4j.category.acts_competition_info=info,acts_competition_info
log4j.appender.acts_competition_info=biz.minaret.log4j.DatedFileAppender
log4j.appender.acts_competition_info.Prefix=acts_competition_info.
log4j.appender.acts_competition_info.Suffix=.txt
log4j.appender.acts_competition_info.Directory=${catalina.home}/log
log4j.appender.acts_competition_info.layout=org.apache.log4j.PatternLayout
log4j.appender.acts_competition_info.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}|%m%n
#是否输出到控制台 默认为true
log4j.additivity.acts_competition_info=true
#error日志
log4j.category.acts_competition_error=error,acts_competition_error
log4j.appender.acts_competition_error=biz.minaret.log4j.DatedFileAppender
log4j.appender.acts_competition_error.Prefix=acts_competition_error.
log4j.appender.acts_competition_error.Suffix=.txt
log4j.appender.acts_competition_error.Directory=${catalina.home}/log
log4j.appender.acts_competition_error.layout=org.apache.log4j.PatternLayout
log4j.appender.acts_competition_error.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}|%m%n
#是否输出到控制台 默认为true
log4j.additivity.acts_competition_error=true
#debug日志
log4j.category.acts_competition_debug=info,acts_competition_debug
log4j.appender.acts_competition_debug=biz.minaret.log4j.DatedFileAppender
log4j.appender.acts_competition_debug.Prefix=acts_competition_debug.
log4j.appender.acts_competition_debug.Suffix=.txt
log4j.appender.acts_competition_debug.Directory=${catalina.home}/log
log4j.appender.acts_competition_debug.layout=org.apache.log4j.PatternLayout
log4j.appender.acts_competition_debug.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}|%m%n
#是否输出到控制台 默认为true
log4j.additivity.acts_competition_debug=false
# 发送日志到指定邮件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
#是否打印调试信息,如果选true,则会输出和SMTP之间的握手等详细信息
log4j.appender.MAIL.SMTPDebug=false
#发送邮件的门槛,仅当等于或高于ERROR(比如FATAL)时,邮件才被发送
log4j.appender.MAIL.Threshold=ERROR
#缓存文件大小,日志达到10k时发送EMAIL
log4j.appender.MAIL.BufferSize=10
#发送邮件的邮箱帐号
log4j.appender.MAIL.From =345849402@qq.com
#SMTP邮件发送服务器地址
log4j.appender.MAIL.SMTPHost=smtp.exmail.qq.com
#SMTP发送认证的帐号名
log4j.appender.MAIL.SMTPUsername=345849402@qq.com
#SMTP发送认证帐号的密码
log4j.appender.MAIL.SMTPPassword=123456
#邮件主题
log4j.appender.MAIL.Subject=竞赛项目异常信息
#发送到什么邮箱,如果要发送给多个邮箱,则用逗号分隔;
#如果需要发副本给某人,则加入下列行
log4j.appender.MAIL.To=345849402@qq.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
#log4j.appender.MAIL.layout=org.apache.log4j.HTMLLayout
log4j.appender.MAIL.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
说说测试中遇到的坑吧,启动警告信息(一开始没注意),提示没有密码和账号这两个参数,显然邮件是认证失败的,然后报错553 authentication is required。
查看源码 org.apache.log4j.net.SMTPAppender类相关参数如下:

参数,复制粘贴也没问题啊,各种百度查询,参数也是这样配置。然后竟然忽略了大小写,网上很多是smtp是大写的,于是乎改成了大写,果真没有警告信息,邮件也发送成功了。暂时还不清楚为啥小写不可以~~~
页: [1]
查看完整版本: log4j配置邮件发送