Django日誌
簡介
Django使用python內建的logging模組列印日誌,python的logging配置由下面的四個方面組成:
- 記錄器: Logger
- 處理程式: Handler
- 過濾器: Filter
- 格式化: Formatter
記錄器 Logger
Logger 為日誌系統的入口。每個logger命名都是bucket,你可以向這個bucket寫入需要處理的訊息。
每個logger 都有一個日誌級別。日誌級別表示該logger 將要處理的訊息的嚴重性。Python 定義以下幾種日誌級別:
-
DEBUG:用於除錯目的的底層系統資訊
- INFO:普通的系統資訊
- WARNING:表示出現一個較小的問題。
- ERROR:表示出現一個較大的問題。
- CRITICAL:表示出現一個致命的問題。
寫入logger 的每條訊息都是一條日誌。每條日誌也具有一個日誌級別,它表示對應的訊息的嚴重性。每個日誌記錄還可以包含描述正在列印的事件的元資訊。
當一條訊息傳遞給logger 時,訊息的日誌級別將與logger 的日誌級別進行比較。
如果訊息的日誌級別大於等於logger 的日誌級別,該訊息將會往下繼續處理。如果小於,該訊息將被忽略。
Logger 一旦決定訊息需要處理,它將傳遞該訊息給一個Handler。
Logger日誌級別
Logger的配置
logger 對應的值是個字典,其每一個鍵都是logger的名字,每一個值又是個字典,描述瞭如何配置對應的Logger例項。
- level (可選的)。logger的級別。
- propagate (可選的)。logger的傳播設定。
- filters (可選的)。logger的filter的識別符號的列表。
- handlers (可選的)。logger的handler的識別符號的列表。
在settings.py中配置日誌
LOGGING = {
`loggers`: {
`reboot`: {
`handlers`: [`file_handler`, `console_handler`],
`level`: `DEBUG`,
},
},
}
處理程式 Handler
Handler 決定如何處理logger 中的每條訊息。它表示一個特定的日誌行為,例如將訊息寫到螢幕上、寫到檔案中或者寫到網路socket
與logger 一樣,handler 也有一個日誌級別。如果訊息的日誌級別小於handler 的級別,handler 將忽略該訊息
Logger 可以有多個handler,而每個handler 可以有不同的日誌級別。利用這種方式,可以根據訊息的重要性提供不同形式的處理
Filters 過濾器
Filter 用於對從logger 傳遞給handler 的日誌記錄進行額外的控制。
預設情況下,滿足日誌級別的任何訊息都將被處理。通過安裝一個filter,你可以對日誌處理新增額外的條件。例如,你可以安裝一個filter,只允許處理來自特定源的ERROR 訊息
Filters 還可以用於修改將要處理的日誌記錄的優先順序。例如,如果日誌記錄滿足特定的條件,你可以編寫一個filter 將日誌記錄從ERROR 降為WARNING
Filters 可以安裝在logger 上或者handler 上;多個filter 可以串聯起來實現多層filter 行為