簡體   English   中英

log4j2擴展Logger類

[英]log4j2 extending Logger class

我試圖從Log4j 1.7遷移到Log4j2.4,在1.7中,我通過擴展org.apache.log4j.Logger並使用擴展的debug / error / fatal方法(例如,

public void error(Object message) {
   Object error = message;

 if (message instanceof Exception) {
    Exception e = (Exception) message;
    StringWriter sw = new StringWriter();
        e.printStackTrace(new PrintWriter(sw));
        error = sw.toString();
    }

 super.error(error);
}

但是在Log4j 2.x中,我無法擴展org.apache.logging.log4j.Logger類; 實現此目標的最佳方法是什么?

我能理解為什么您可能想使用Log4j 1.x來執行此操作,但是我無法弄清楚為什么要使用log4j 2來執行此操作。最佳方法是在布局中,但大多數情況下已經執行了此操作。

正如Ralph指出的那樣,Log4j2具有非常豐富的功能集,如果您仔細閱讀文檔,通常會發現您可以使用內置布局查找過濾器和其他功能來實現目標。

編寫自定義查詢只需要花費幾行代碼,就可以使您強大地連接到日志記錄子系統,您可以將其用於多種用途。

如果您確實出於某種原因想要擴展Logger,請注意,某些布局要求Log4j遍歷stacktrace以報告調用記錄器的代碼中的哪個類和行。 這種機制有點復雜,通常我建議您創建一個Logger包裝器,而不是對其進行擴展。 (最好是委托而不是子類化。)

Log4j有一個工具可以使您輕松實現這一點:“自定義日志級別”頁面中記錄的“自定義日志生成器”工具。 試試看,看看是否能滿足您的需求。

暫無
暫無

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

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