如何規劃Logger的輸出日誌級別 待補充

2021-08-25 06:58:03 字數 1118 閱讀 5818

乙個專案的開展需要各種各樣的規範,特別是對於剛入門的開發人員,更是需要許多規範對其的開發工作進行指導與保證.

[size=large]

[b]最近就遇到了有關日誌輸出級別的規範的問題,開發人員需要明確什麼時候使用哪個級別進行日誌輸出[/b]

目前關於debug與error的使用倒是非常分明,乙個除錯時沒有出錯用,乙個是出錯的時候使用.但是,什麼訊息是放在debug中進行輸出,什麼樣的資訊可能需要使用info.而什麼樣的錯誤資訊使用error,而什麼樣的錯誤資訊使用warn.

現在在此整理一部分:

[b]error[/b]

在攔截異常而不直接將該異常往外丟擲時(不直接往外指對異常進行了改造或封裝),需要使用error輸出異常資訊.而如果直接將異常往外拋,則不要使用error進行異常輸出,由外部/呼叫方負責處理.

[b]warn[/b]

在執行過程時,如果遇到一些異常的資料或行為,而該異常或行為不直接影響系統的執行(直接影響:指該資料或行為出錯,則應用無法正確執行,非直接影響:指資料或行為雖然有誤,但應用可正確執行,不會由此產生錯誤資料),那麼使用warn進行錯誤提示.

範例場景:

非關鍵配置資料:在系統有預設配置的情況下匯入新的配置時出錯,則系統將使用舊的配置,此時使用warn進行錯誤提示,但允許應用繼續執行.

logger.warn("非找到指定配置檔案***x,將使用預設配置");

[b]info[/b]

info是提示資訊的意思,對於有部分日誌,允許應用系統執行和維護人員在系統執行時進行檢視的,可使用此級別進行輸出.相對於debug,info日誌更針對的是上線後看到應用系統後台的人員,而不是開發人員所想看的程式執行時的細粗度資訊

範例場景:

logger.info("應用系統開始輸入資料");

logger.info("應用系統正在進行初始化");

[b]debug[/b]

debug主要針對開發人員,比如檢查輸入引數值,根據系統底層執行狀態.

範例場景:

logger.debug("輸入引數,部門id:{}", deptid);

logger.debug("刪除指定使用者角色配置資訊,userid:{}, userroleid:{}", new object);

[/size]

Logger 日誌輸出請使用佔位符

在工作覆盤時,檢查 的過程中,發現好多 在列印日誌的時候,會用字串拼接,這是是非常不好的現象。對於佔位符的形式而言,只有在我們需要的時候才會提取字串,這樣就會避免建立string物件的時候消耗大量的資源。因為string物件是不可變的,所以會消耗大量的堆記憶體,一旦我們用了字串拼接,就有大量的字串占...

使用 logger 在指令碼中輸出多個日誌

最近在寫乙個小工具的時候,在某個指令碼中需要為不同物件,輸出單獨的屬於該物件的日誌檔案,方便檢視。通常在寫 python 指令碼的時候,習慣使用 logging 模組來輸出日誌,簡單,方便。usr bin env python coding utf 8 author glon ho import l...

使用 logger 在指令碼中輸出多個日誌

最近在寫乙個小工具的時候,在某個指令碼中需要為不同物件,輸出單獨的屬於該物件的日誌檔案,方便檢視。通常在寫 python 指令碼的時候,習慣使用 logging 模組來輸出日誌,簡單,方便。usr bin env python coding utf 8 author glon ho import l...