2016-07-07 29 views
1

在Log4j 1.2中,您可以簡單地使用記錄器並在運行時添加appender。例如,這對於測試目的而言非常方便。我們曾經創建一個模擬appender並將其添加到記錄器。隨後我們可以做出不同的斷言。如何在Log4j2中添加appender到Logger中

什麼是log4j2的等價物?

這個example例如顯示其他人如何添加測試appender。

log4j2頁面顯示了一些關於如何添加appender的示例。但是,他們會在整體上下文中添加appender。這與爲特定記錄器添加appender不同。

另一個觀察結果是,如果使用org.apache.logging.log4j.core.Logger而不是org.apache.logging.log4j.Logger,則仍然可以添加appender。但是大多數人使用org.apache.logging.log4j.Logger。實際上,LogManager會返回一個org.apache.logging.log4j.Logger的實例。所以,我不確定如何連接這兩個類,以及它們是否應該連接。

另一種看法是,如果我叫

 LogManager.getContext().getConfiguration().getLoggers() 

我可以在上下文中的所有LoggerConfig對象的IST。隨後我將appender添加到任何LoggerConfig對象。但問題是,如何獲得與org.apache.logging.log4j.Logger實例相關的LoggerConfig?

這讓我很困惑。

回答

3

org.apache.logging.log4j.Logger是位於log4j-api模塊中的接口。 org.apache.logging.log4j.core.Logger是生活在log4j-core模塊中的一個具體類(實現上述接口)。

LogManager(同樣在log4j-api模塊中)返回實現org.apache.logging.log4j.Logger接口的內容,並且如果log4j-core模塊位於類路徑中,這將是org.apache.logging.log4j.core.Logger的一個實例。

因此,您可以將返回的記錄器投射到org.apache.logging.log4j.core.Logger並添加Appender。

每個核心記錄器都有一個LoggerConfig(1對1關係)。您可以找到與所需記錄器相對應的LoggerConfig,因爲它們具有相同的名稱。

+0

謝謝。那樣做了。 – Klaus

+0

如何設置要添加的appender的日誌級別? – JimN

相關問題