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=[acts_competition]|%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。
1.png
查看源码 org.apache.log4j.net.SMTPAppender类相关参数如下:
2.png
参数,复制粘贴也没问题啊,各种百度查询,参数也是这样配置。然后竟然忽略了大小写,网上很多是smtp是大写的,于是乎改成了大写,果真没有警告信息,邮件也发送成功了。暂时还不清楚为啥小写不可以~~~

qrcode_for_gh_bf7a27ade681_258.jpg

作者: 小柒

出处: https://blog.52itstyle.com

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(345849402@qq.com)咨询。