0

我需要整理属于几个类别的所有log4j日志,并在每天结束时发送一封邮件。当我使用org.apache.log4j.DailyRollingFileAppender将所有类别记录到同一个(过时的)文件中时,我无法找到一种方法来过滤生成的日志而不阅读日志文件。如果有人可以建议我使用java来做到这一点,那就太好了。以下代码是我需要过滤的一些日志类别的示例。

log.fatal("Fatal error message");
log.error("Error message");

如果最终无法进行过滤,那么至少我可以找到一种方法来覆盖这些类别的功能就足够了。我的 log4j.properties 看起来像这样。

log =/usr/end_of_day_logs
log4j.rootLogger = DEBUG, FILE

log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.File=${log}/log.out
log4j.appender.FILE.Append=true
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm} [%C %x~ %M:%L] %-5p - %m%n
4

2 回答 2

0

您可以为每个日志级别[甚至为不同的日志包]创建多个附加程序。

log =/usr/end_of_day_logs
log4j.rootLogger = FATAL, FFILE

log4j.appender.FFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FFILE.File=${log}/flog.out
log4j.appender.FFILE.Append=true
log4j.appender.FFILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FFILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm} [%C %x~ %M:%L] %-5p - %m%n

log =/usr/end_of_day_logs
log4j.rootLogger = ERROR, EFILE

log4j.appender.EFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.EFILE.File=${log}/elog.out
log4j.appender.EFILE.Append=true
log4j.appender.EFILE.DatePattern='.'yyyy-MM-dd
log4j.appender.EFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.EFILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm} [%C %x~ %M:%L] %-5p - %m%n

然后使用具有所需模式的另一个附加器和 SMTP 附加器。

log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.BufferSize=1
log4j.appender.MAIL.SMTPHost=smtp.example.com
log4j.appender.MAIL.From=application@example.com
log4j.appender.MAIL.To=developer@example.com
log4j.appender.MAIL.Subject=Exception in Application
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5r %-5p [%t] %c{2} - %m%n
于 2013-04-17T07:49:24.883 回答
0

一种选择是为单独的类别创建单独的文件,然后实现Appender发送邮件的方法。您可以查看DailyRollingFileAppender它的作用,并可能将其扩展为通过邮件发送文件。

于 2013-04-17T05:55:04.670 回答