log4j SMTPAppender控制发送邮件间隔

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4j SMTPAppender控制发送邮件间隔相关的知识,希望对你有一定的参考价值。

Log4j的Appender中有个SMTPAppender,支持在日志事件发生ERROR及以上级别的时候发送邮件。

源代码中貌似在遇到ERROR的情况下就会发邮件,不排除程序会在某一时刻出错,一直有ERROR级别的日志,这个时候就会发送N多封邮件(邮箱服务累哭)。于是修改一下SMTPAppender源代码,使之能够在配置文件中控制发送邮件的间隔。


修改代码:

https://github.com/chocolateBlack/log4j/blob/trunk/src/main/java/org/apache/log4j/net/SMTPAppender.java


配置文件:

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

[email protected]

log4j.appender.MAIL.SMTPDebug=false

log4j.appender.MAIL.Subject=dx_flume_log4j

[email protected]

log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout

log4j.appender.MAIL.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c %x


本文出自 “巧克力黑” 博客,请务必保留此出处http://10120275.blog.51cto.com/10110275/1855801

以上是关于log4j SMTPAppender控制发送邮件间隔的主要内容,如果未能解决你的问题,请参考以下文章

Log4j的邮件发送类SMTPAppender改造

log4j发送给QQ邮箱

logback之邮件告警通知SMTPAppender

基于日志级别的 log4net smtpappender 主题

Log4j发送邮件

log4j email EmailDailyRollingFileAppender