2017-01-09 61 views
0

Log4j整齊地提取日誌打印的行號,最有可能使用Throwable通過查看它的StackTrace來獲取行號。如果包裝Log4j如何打印呼叫位置的行號

Alas Logger不是Log4j中的一個接口,因此不能僅僅通過調試,信息,錯誤等方法對它進行另一個實現,然後可以根據平臺的需要切換實現。

所以如果一個創建了一個包裝,即:

class Parent { 
    static final Logger log = Logger.getLogger(Parent.class); 

    static void debugLog(String str) { 
     log.debug(str); 
    } 
    static void debugLog(String str, Throwable t) { 
     log.debug(str, t); 
    } 
} 

一個人如何可以把它放什麼在呼喚DEBUGLOG()到log4j的記錄器,以便它可以作爲一個將希望的行號。或者這只是Log4j中的一個可怕的設計缺陷。

回答

0

你必須親自計算位置並建立一個LocationInfo。 然後,您必須創建LoggingEvent並調用callAppenders方法。

+0

聽起來很合理 - 我會試試看看:)稍後當我嘗試時會檢查它... – peterk