Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何配置log4j以忽略层次结构记录器_Java_Logging_Log4j - Fatal编程技术网

Java 如何配置log4j以忽略层次结构记录器

Java 如何配置log4j以忽略层次结构记录器,java,logging,log4j,Java,Logging,Log4j,我有一个带有两个记录器和两个特殊附加器的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

我有一个带有两个记录器和两个特殊附加器的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!"); } 包装foo.bar.dummy.pack; 公开课Foo { 私有静态最终记录器LOG=Logger.getLogger(Foo.class); 私有静态最终记录器LOG_XML=Logger.getLogger(Foo.class.getPackage().getName()+“.XML”); } 公共静态void main(字符串[]args) { LOG.error(“Hello”); LOG_XML.error(“World!”); } 其结果是:

Main_Logger.log

[忽略log4j模式布局]您好
[忽略log4j图案布局]世界

Log\u Error.Log

[忽略log4j图案布局]世界

我的想法是只在单独的文件中记录我想要的事件,但是当我调用记录器
LOGERRORXML
时,输出在两个文件中,我的意思是在为
LOGERRORXML
appender和
LOGFILE
appender声明的文件中,即使我使用
LOGERRORXML
记录器。我认为这是因为
LOGFILE
logger声明中的层次依赖性


如何配置log4j,使其仅打印特定附件(本例中为文件附件)中的输出,而不依赖于层次结构?

为避免消息重复,您可能需要:

#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

查看更多精彩内容!这正是我需要的。非常感谢。