--- layout: post title: log4j日志发送邮件配置实战 category: 技术 tags: Logger keywords: description: --- {:toc} ## 目的 对于系统错误信息和出错原因,系统能够及时主动的将错误信息发送给指定人邮件,及时发现问题及时处理。 ## 实战 ### 引入依赖包 ```xml 1.7.2 1.2.17 org.slf4j jcl-over-slf4j ${slf4j.version} org.slf4j slf4j-api ${slf4j.version} org.slf4j slf4j-log4j12 ${slf4j.version} log4j log4j ${log4j.version} ``` log4j的version必须在1.2.16及以上,否则使用qq邮箱会报`530 Error: A secure connection is requiered(such as ssl)`错误!! ### 配置属性文件 ```properties log4j.rootLogger=info,stdout,A4 # 发送邮件日志的配置 log4j.logger.MailLogger=error,MAIL log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender log4j.appender.MAIL.Threshold=ERROR log4j.appender.MAIL.BufferSize=1024 log4j.appender.MAIL.SMTPHost=smtp.qq.com log4j.appender.MAIL.Subject=ErrorMessage log4j.appender.MAIL.From=${userName}@qq.com log4j.appender.MAIL.To=${otherUserName0}@foxmail.com,${otherUserName1}@foxmail.com log4j.appender.MAIL.SMTPUsername=${userName}@qq.com log4j.appender.MAIL.SMTPPassword=${授权码} log4j.appender.MAIL.SMTPPort=587 log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout log4j.appender.MAIL.layout.ConversionPattern=[%-5p][%t] %d - %c %l - %m%n ``` 其中: - ${otherUserName0}为待发送人员邮箱前缀,多个收件人用逗号分隔 - ${userName}为发件人邮箱前缀 - ${授权码}为qq邮箱设置中获取的授权码 - SMTPPort:设置该属性可以避免qq邮箱报错`530 Error: A secure connection is requiered(such as ssl)`,该属性在log4j的1.2.16及以上版本才存在 没有将`MailLogger`加入到`rootLogger`中是为了只在指定位置调用发邮件日志功能而不是整个系统都使用。 ### java中引用 ```java private static final Logger LOGGERMAIL=LoggerFactory.getLogger("MailLogger"); public static void main(String[] args) { try { String str=null; System.out.println(str.length()); } catch(Exception e) { LOGGERMAIL.error("===发送日志邮件===",e.toString()); } } ```