首页 文章

如何配置log4j以忽略层次结构 Logger

提问于
浏览
0

我有一个log4j配置文件,包含两个 Logger 和两个特定的appender . 该文件看起来如下所示:

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模式布局]世界!

我的想法只是在分离的文件中记录我想要的事件,但是当我调用 Logger LOGERRORXML 输出在两个文件中时,我的意思是在为 LOGERRORXML appender和 LOGFILE appender声明的文件中,即使我正在使用 LOGERRORXML Logger . 我认为这是 LOGFILE logger声明中的层次结构依赖 .

我如何配置log4j只打印特定appender(在这种情况下为文件appender)的输出,没有层次结构依赖?

1 回答

  • 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
    

    查看更多Log4j Tutorial: Additivity – what and why?

相关问题