日誌(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;
}
}