同一log4j文件中的多个appender

同一log4j文件中的多个appender,log4j,rollingfileappender,smtpappender,Log4j,Rollingfileappender,Smtpappender,我目前正试图将log4j配置为使用2个appender。调试信息应发送到日志,错误应发送到电子邮件地址以便立即处理 目前,我的属性文件如下所示: log4j.category.myCategory=DEBUG, myLogAppender log4j.category.myCategory=ERROR, myEmailAppender # myLogAppender is set to be a FileAppender. log4j.appender.myLogAppender=org.ap

我目前正试图将log4j配置为使用2个appender。调试信息应发送到日志,错误应发送到电子邮件地址以便立即处理

目前,我的属性文件如下所示:

log4j.category.myCategory=DEBUG, myLogAppender
log4j.category.myCategory=ERROR, myEmailAppender

# myLogAppender is set to be a FileAppender.
log4j.appender.myLogAppender=org.apache.log4j.RollingFileAppender
log4j.appender.myLogAppender.File=d:/myLogs.log
log4j.appender.myLogAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.myLogAppender.layout.ConversionPattern=%-4r [%t] %-5p %c - %m%n
log4j.appender.myLogAppender.MaxFileSize=100KB
log4j.appender.myLogAppender.MaxBackupIndex=1

# myEmailAppender is set to be a EmailAppender.
log4j.appender.myEmailAppender=org.apache.log4j.net.SMTPAppender
log4j.appender.myEmailAppender.BufferSize=1
log4j.appender.myEmailAppender.SMTPHost=myHost
log4j.appender.myEmailAppender.From=error@mydomain.com
log4j.appender.myEmailAppender.Subject=Error in the module
log4j.appender.myEmailAppender.To=error@mydomain.com
log4j.appender.myEmailAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.myEmailAppender.layout.ConversionPattern=%-4r An error occured in the module. Please refer the myLogs.log on the server to get more details. The message was: [%t] %-5p %c - %m%n
出于某种原因,log4j只发送具有此配置的邮件。我一注释掉第二行,log4j就开始附加到日志文件中


我做错了什么?如何获取调试信息以获取日志,如何获取错误以发送邮件?

您应该使用某种过滤器,使用有关任务级别的信息。但是,只有XML(不是属性文件)类型的配置才支持使用过滤器。有关详细信息,请参阅:

谢谢您的回答。它现在根据级别登录到不同的文件。你知道如何按类别过滤吗?你说的“按类别过滤”是什么意思?在您的示例中只使用了一个类别(现在实际上称为“logger”)。您可以使用一个或多个记录器/类别登录到另一个目标。您是对的,我的示例仅显示了一个类别。我刚刚注意到框架的其他部分也在使用log4j。正如你所说,我添加了一个记录器,现在一切都很顺利。谢谢