Django基礎之四(日誌)【待續】

wanghui發表於2019-02-16

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 行為

相關文章