2011-06-09 55 views
1

我試圖強制log4j消息內的細節,而不是隻是一個字符串。最終我想有這樣的:Log4j - 強制日誌消息參數

logger.info(「component」,「error code」,「error message」);

我甚至可以使用組件的枚舉。

然後,我會想到的消息出現在日誌中的「時間 - 組件 - 代碼 - 消息」

任何想法?

+0

通常使用log4j,記錄捕獲異常的類的名稱。錯誤代碼在消息中合併。您稍後可以對錯誤代碼進行grep,只需創建您的格式以區分消息的代碼和文本。 – 2011-06-09 10:36:09

回答

6

一個非常平凡解(對於這種特殊情況下):

logger.info(
     String.format("%s - %s - %s", "component", "error code", "error message")); 

或在一個改進版本:

logger.info(createMessage("component", "error code", "error message")); 

public static String createMessage(
       String component, String errorCode, String errorMessage) { 
    return String.format("%s - %s - %s", 
       "component", "error code", "error message"); 
} 

對於更一般的解決方案,考慮包裝原始記錄器cla ss到一個自定義記錄器類中,並實現一個info方法,該方法根據輸入將新的消息帶到三個參數和代表internalLogger.info(String message)

+0

謝謝大家Andreas有我們使用的解決方案。 – Peter 2011-06-11 07:27:27