我有一个带有两个记录器和两个特定appender的log4j配置文件。该文件看起来如下所示:
log4j.rootLogger=DEBUG, CONSOLE
Logger to be used with Logger.getLogger(Class) method
log4j.logger.foo.bar=ALL, LOGFILE
Logger to be used with Logger.getLogger(String) method
log4j.logger.foo.bar.dummy.pack.XML=ERROR, LOGERRORXML
log4j.appender.LOGERRORXML=org.apache.log4j.RollingFileAppender
log4j.appender.LOGERRORXML.append=true
log4j.appender.LOGERRORXML.encoding=UTF-8
log4j.appender.LOGERRORXML.file=Log_Error.log
log4j.appender.LOGERRORXML.MaxFileSize=52428800
log4j.appender.LOGERRORXML.MaxBackupIndex=10
log4j.appender.LOGERRORXML.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGERRORXML.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
log4j.appender.LOGERRORXML.Threshold=ERROR
log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.LOGFILE.append=true
log4j.appender.LOGFILE.encoding=UTF-8
log4j.appender.LOGFILE.file=Main_Logger.log
log4j.appender.LOGFILE.MaxFileSize=52428800
log4j.appender.LOGFILE.MaxBackupIndex=10
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
log4j.appender.LOGFILE.Threshold=ERROR
班级看起来像这样
package foo.bar.dummy.pack; public class Foo { private static final Logger LOG = Logger.getLogger(Foo.class); private static final Logger LOG_XML = Logger.getLogger(Foo.class.getPackage().getName()+".XML"); } public static void main(String[] args) { LOG.error("Hello "); LOG_XML.error("World!"); }
结果是:
Main_Logger.log
[忽略log4j模式布局]你好 [忽略log4j模式布局]世界!
Log_Error.log
[忽略log4j模式布局]世界!
我的想法只是在分离的文件中记录我想要的事件但是当我调用记录器LOGERRORXML
时,输出在两个文件中,我的意思是在LOGERRORXML
appender和{{即使我正在使用LOGFILE
记录器,也可以使用apincder。我认为这是LOGERRORXML
记录器声明中的层次结构依赖。
我如何配置log4j只打印特定appender(本例中是文件appender)的输出,没有层次结构依赖?
答案 0 :(得分:0)
为避免重复邮件,您可能需要:
#Logger to be used with Logger.getLogger(Class) method
log4j.logger.foo.bar=ALL, LOGFILE
log4j.additivity.foo.bar=false
#Logger to be used with Logger.getLogger(String) method
log4j.logger.foo.bar.dummy.pack.XML=ERROR, LOGERRORXML
log4j.additivity.foo.bar.dummy.pack.XML=false