天天看點

【總結】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]

繼續閱讀