0

我有一个类“Example.class”。我得到我的记录器:

    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

我的班级正在通过 log.info(..)、log.debug(..) 等记录到文件log.txt中。

现在我想为同一类使用不同的记录器,例如:

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

这个记录器应该登录到一个不同的文件,例如

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

这有可能吗?

4

2 回答 2

1

不,类别标识记录器。

也就是说,您不必强制使用类作为类别。你可以在同一个类中使用:

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

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

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

于 2012-08-31T12:40:43.197 回答
0

调用Logger.getLogger(Example.class)两次将返回相同或无法区分的Logger. 这意味着 Log4J 无法对它们进行任何区分,并且它们将始终位于同一个文件中。

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

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

并配置log4j.xml为使用不同的附加程序differentLogger

于 2012-08-31T12:41:50.947 回答