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