日誌(Log)

Posted by Bruce Tsai

記錄原則

Log 為程式上線後追蹤系統問題的最主要手段。如何記錄 log 及需要記錄何種訊息是開發中常會碰到的問題。最主要的原則為:追蹤問題所需要的資訊都需要記錄在 log 中。

主要的記錄內容

  • 記錄點的狀態
  • 錯誤發生時的 root cause
  • 記錄點的參數與變數值

情境:沒有錯誤發生,但程式執行不符合預期

  • 可能原因為邏輯判斷錯誤,以執行的步驟記錄 log,釐清問題所在
Logs.debug("請求路徑為: %s", path);

// step 1, code here

Logs.debug("使用者代號: %s", user.getId());

// step 2, code here

Logs.debug("使用者身份: %s", 
    Arrays.toString(permission.getRoleDescription()));

// step 3, code here

情境:錯誤發生時,記錄所需資訊

  • 需要記錄的資訊包含了除錯時所需的資訊。可以反向思考,在錯誤發生時,需要何種資訊來重現可能的錯誤,並將此類資訊記錄下來。
public String getDBProperties(String key) {
    try {
        IParamService paramService =
            context.getBean(IParamService.class);
        return paramService.queryParamByCode("WORDING", key);
    } catch (Exception e) {
        // 記錄時包含了輸入的參數
        // 與錯誤的 exception root casue
        LogHandler.error(ResourceUtil.class,
            String.format("取得說明 %s 發生錯誤", key), e);
        return null;
    }
}

results matching ""

    No results matching ""