簡體   English   中英

如何在Log4j2中向Logger添加appender

[英]How to add appender to Logger in Log4j2

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

與log4j2有什么相同之處?

例如 ,此示例顯示了其他人如何添加測試追加器。

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?

這讓我很困惑。

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模塊在classpath中,則它將是org.apache.logging.log4j.core.Logger的實例。 org.apache.logging.log4j.core.Logger

因此,您可以將返回的Logger強制轉換為org.apache.logging.log4j.core.Logger並添加Appender。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM