Log4j的Appender中有个SMTPAppender,支持在日志事件发生ERROR及以上级别的时候发送邮件。
源代码中貌似在遇到ERROR的情况下就会发邮件,不排除程序会在某一时刻出错,一直有ERROR级别的日志,这个时候就会发送N多封邮件(邮箱服务累哭)。于是修改一下SMTPAppender源代码,使之能够在配置文件中控制发送邮件的间隔。
修改代码:
配置文件:
log4j.rootLogger=INFO,stdout,R,MAIL
# stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] %c{2}:%L %m%n
log4j.appender.stdout.Encoding=UTF-8
# rolling log file
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.maxFileSize=1GB
log4j.appender.R.maxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c %x -- %m%n
log4j.appender.R.File=/usr/local/flume/logs/server.log
log4j.appender.R.Encoding=UTF-8
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=ERROR
#发送邮件的时间间隔,防止系统产生很多ERROR日志,收到邮件太多,单位:1800秒log4j.appender.MAIL.SendMailInterval=1800
log4j.appender.MAIL.From=123@163.com
log4j.appender.MAIL.SMTPDebug=false
log4j.appender.MAIL.Subject=dx_flume_log4j
log4j.appender.MAIL.To=123@163.com.cn
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c %x
本文转自巧克力黒 51CTO博客,原文链接:http://blog.51cto.com/10120275/1855801,如需转载请自行联系原作者