log4j邮件发送错误日志
能够起到的作用:
????? 项目错误信息能及时(实时)反映给项目维护人员以及相关负责人
优点:1,快速响应
????? 2,共同监督
????? 3,邮件正文直接显示了错误信息,拷贝信息比登陆服务器再查找要方便
????? 4,在日志信息继续写入文件的前提下,多了另外一种获取信息的渠道。
补充:log4j可以实现输出到控制台,文件,回滚文件,发送日志邮件,数据库,自定义标签。
输出:该方法可以在日志输出级别为 ERROR
???????? (即代码中调用logger.error("message")方法)时发送邮件
解决:第一步,修改 log4j.properties文件(以SFCS_WEB项目为例)
????? 第二步,利用javamail发送邮件,需要导入包mail.jar和activation.jar?
??????????? SFCS_WEB项目因为已经存在上述包,因此直接修改配置文件后就可以使用。
????? 该项目开发人员自行配置如下:(下文中我适当添加了一些注释,便于理解)
????? ## ROOT 可以设置日志输出的方式,日志可以依据以下设置同时输出到多种目的地
????? log4j.rootCategory=INFO,file
????? ## R ?将日志写入文件???????
?????? log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
???????log4j.appender.file.DatePattern='.'yyyy-MM-dd
???????log4j.appender.file.File=run.log
???????log4j.appender.file.Append=true
???????log4j.appender.file.Threshold=INFO
???????log4j.appender.file.layout=org.apache.log4j.PatternLayout
???????log4j.appender.file.layout.ConversionPattern=%c %x - %m%n
???????开始修改,修改分为两部分,
???????第一部分修改log4j.rootCategory=INFO,file------->log4j.rootCategory=INFO,file,MAIL
???????之后在该文件尾部追加以下内容:
???????log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
???????#?日志的错误级别
???????log4j.appender.MAIL.Threshold=ERROR
???????#?缓存文件大小,日志达到1K时发送Email ??可以自定义缓存文件的大小
???????log4j.appender.MAIL.BufferSize=1
???????#?发送邮件的服务器
???????log4j.appender.MAIL.SMTPHost=X.X.X.X(实际SMTP服务器IP或主机名)
???????#?邮件的标题
???????log4j.appender.MAIL.Subject=Log4J ErrorMessage
???????#?发件人地址
???????log4j.appender.MAIL.From=test@163.com
???????#?日志邮件的接收者
???????log4j.appender.MAIL.To=test@163.com
???????#?日志PatternLayout
???????log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
???????#?日志的格式
???????log4j.appender.MAIL.layout.ConversionPattern=[ErrorMessage] %d - %c -%-4r [%t] %-5p %c %x - %m%n
???????以上内容为必须的。
???????如果SMTP服务器需要验证的话,可以添加SMTP服务器用户名和密码,但是以下两项不是所有的LOG4J版本都支持。
???????需要自己提前确认清楚的。
???????#?SMTP用户名
?????? log4j.appender.MAIL.SMTPUsername=
????? #?SMTP密码
?????? log4j.appender.MAIL.SMTPPassword=
????? 至此,log4j配置文件修改完毕。
????? 以上配置和修改全部经过验证,并且成功发送出ERROR的邮件。???????
存在问题:中文乱码问题
????? 该信息的产生很多时候是因为logger.error("message")中包含中文字符所致。
????? 如果不想去解决这个问题,以下有网络资料供参考:
???? 原因:配置文件里的layout属性对应的布局模式
???? log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
???? 为处理中文乱码,可以写一个布局模式。
???? 如果你要使用HTMLLayout,就写一个HTMLLayout的子类,覆盖HTMLLayout
???? 的getContentType方法即可。假如我要用?? org.apache.log4j.HTMLLayout。
????? 就写一个DefineLayOut 类,代码如下:
?????????package com.sun;
?????????import org.apache.log4j.HTMLLayout;
?????????public class DefineLayOut extends HTMLLayout{
?????????public String getContentType() {
?????????return "text/html;charset=GBK"; //修改编码方式而已!!!
?????????}
?????????}