2012-09-13 43 views
0

我目前正在尝试配置log4j以使用2个appender。调试信息应发送至日志,并且应将错误发送至电子邮件地址以便立即处理。多个appender在同一个log4j文件中

暂且,我的属性文件看起来如下:

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 
[email protected] 
log4j.appender.myEmailAppender.Subject=Error in the module 
[email protected] 
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就开始追加到日志文件。

我做错了什么?如何获取调试信息以获取日志和错误信息?

回答

0

您应该使用某种过滤器,使用有关您任务级别的信息。但是仅使用XML(非属性文件)配置类型支持使用过滤器。详情请参阅:http://wiki.apache.org/logging-log4j/LogToAppenderByLevel

+0

感谢您的回答。它现在根据级别登录到不同的文件。你知道如何按类别过滤吗? – Jaepetto

+0

什么意思是“按类别过滤”?在您的示例中,您只使用了一个类别(现在实际上称为“记录器”)。您可以使用另一个记录器/类别登录到另一个目标。 –

+0

你是对的我的例子只显示一个类别。我只注意到框架的其他部分也使用log4j。正如你所说,我添加了一个记录器,现在一切都很顺利。谢谢。 – Jaepetto