3
我有一個具有log4j日誌記錄的java項目。它使用滾動文件appender和多個記錄器來登錄到文件。 我想添加一個DBappender並有一個獨立的記錄器,只寫入這個appender,沒有其他記錄器發送消息給它。我需要說一個類有兩個記錄器,一個寫入fileAppender,一個寫入dbAppender。這是可能的,如果是這樣的話,它的配置是什麼?LOG4J同一類中的多個記錄器
感謝
我有一個具有log4j日誌記錄的java項目。它使用滾動文件appender和多個記錄器來登錄到文件。 我想添加一個DBappender並有一個獨立的記錄器,只寫入這個appender,沒有其他記錄器發送消息給它。我需要說一個類有兩個記錄器,一個寫入fileAppender,一個寫入dbAppender。這是可能的,如果是這樣的話,它的配置是什麼?LOG4J同一類中的多個記錄器
感謝
有可能在一個類中使用兩個Logger
秒。
第一個想法:把兩個記錄器以不同的名稱:
package com.mycompany.apackage.MyClass;
public class MyClass {
private static final logger = Logger.getLogger(Myclass.class)
private static final dbLogger = Logger.
getLogger(Myclass.class.getName() + ".dblogger")
}
配置程序包的dbLogger
的:
<root>
<appender-ref ref="mainlog" />
</root>
<logger name="com.mycompany.apackage.MyClass.dblogger">
<appender-ref ref="dbappender" />
</logger>
(未測試)。 在這種情況下,dbLogger
也會記錄到mainlog
appender。如果不合適,您可以在mainlog
(和其他)appender中使用 自定義篩選器,篩選出dbLogger
的消息。另一種解決方案是使用一種完全不同的前綴爲dbLogger
:
private static final logger = Logger.getLogger(Myclass.class)
private static final dbLogger = Logger.
getLogger("dblogger." + Myclass.class.getName())
Log4j的配置:
<root>
</root>
<logger name="com.mycompany">
<appender-ref ref="mainlog" />
</logger>
<logger name="dblogger.com.mycompany">
<appender-ref ref="dbappender" />
</logger>
需要注意的是,如果你傳遞給getLogger()
方法相同的參數,你會得到同樣的Logger
對象,所以你必須使用不同的名稱。