使用Log4j使用相同的记录器登录到不同的文件

时间:2012-08-31 12:37:36

标签: java log4j

我有一个Class“Example.class”。我得到了我的Logger:

    private final Logger log = Logger.getLogger(Example.class);

我的log4j.properties看起来像:

    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=log.txt

    log4j.appender.file.MaxFileSize=1024KB
    log4j.appender.file.MaxBackupIndex=5

    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%p %t %c - %m%n

My Class通过log.info(..),log.debug(..)等登录到文件 log.txt

现在我希望为同一个类提供不同的记录器,例如:

    private final Logger differentLogger = Logger.getLogger(Example.class);

并且此记录器应该登录到另一个文件,例如

    differentLogger.info("Hello World");
    //writes 'Hello World' into differentLogFile.txt

这有可能吗?

2 个答案:

答案 0 :(得分:1)

不,该类别标识记录器。

那就是说,你不会被迫使用这个类作为类别。你可以在同一个班级中使用:

private final Logger log = Logger.getLogger(Example.class);

private final Logger differentLogger = Logger.getLogger(mylogs.different);

之后,在配置文件中,您可以定义多个appender并将每个类别分配给不同的appender。

答案 1 :(得分:0)

两次调用Logger.getLogger(Example.class)将返回Logger的相同或无法区分的实例。这意味着Log4J无法区分它们,它们将始终存放在同一个文件中。

解决方案很明显:使用不同的记录器!

Logger differentLogger = Logger.getLogger("differentLogger");

并配置log4j.xmldifferentLogger使用不同的appender。