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

を 2 回呼び出すLogger.getLogger(Example.class)と、 の同じインスタンスまたは区別できないインスタンスが返されますLogger。これは、Log4J がそれらを区別できず、常に同じファイルに格納されることを意味します。

解決策は明らかです。別のロガーを使用してください。

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

log4j.xmlに別のアペンダーを使用するように構成しますdifferentLogger

于 2012-08-31T12:41:50.947 に答える