這篇文章介紹了 python 的 logging 模組,包括它的設計以及針對更多複雜案例的適用方法。這篇文章不是寫給開發者的文件,它更像是乙個指導手冊,來說明 python 的 logging 模板是如何搭建的,並且激發感興趣的人深入研究。
為什麼使用 logging 模組?
也許會有開發者會問,為什麼不是簡單的 print 語句呢? logging 模組有很多優勢,包括:
多執行緒支援
通過不同級別的日誌分類
靈活性和可配置性
將如何記錄日誌與記錄什麼內容分離
最後一點,將我們記錄內容從記錄方式中真正分離,保證了軟體不同部分的合作。舉個例子,它允許乙個框架或庫的開發者增加日誌並且讓系統管理員或負責執行配置的人員決定稍後應該記錄什麼。
logging 模組中有什麼
logging 模組完美地將它的每個部分的職責分離(遵循 apache log4j api 的方法)。讓我們看看乙個日誌線是如何通過這個模組的**,並且研究下它的不同部分。
記錄器(logger)
記錄器是開發者經常互動的物件。那些主要的 api 說明了我們想要記錄的內容。
舉個記錄器的例子,我們可以分類請求發出一條資訊,而不用擔心它們是如何從**被發出的。
日誌記錄
日誌記錄是 logging 模組用來滿足所有需求資訊的包。它們包含了需要記錄日誌的地方、變化的字串、引數、請求的資訊佇列等資訊。
它們都是被記錄的物件。每次我們呼叫記錄器時,都會生成這些物件。但這些物件是如何序列化到流中的呢?通過處理器!
處理器處理器將日誌記錄傳送給其他輸出終端,他們獲取日誌記錄並用相關函式中處理它們。
比如,乙個檔案處理器將會獲取一條日誌記錄,並且把它新增到檔案中。
標準的 logging 模組已經具備了多種內建的處理器,例如:
多種檔案處理器(timerotated, sizerotated, watched),可以寫入檔案中,
streamhandler 輸出目標流比如 stdout 或 stderr,
smtphandler 通過 email 傳送日誌記錄,
sockethandler 將日誌檔案傳送到流套接字,
sysloghandler、nteventhandler、httphandler及memoryhandler等。
python函式如何寫 python如何寫函式
python函式的定義 定義函式,也就是建立乙個函式,可以理解為建立乙個具有某些用途的工具。定義函式需要用 def 關鍵字實現,具體的語法格式如下 def 函式名 形參列表 由零條到多條可執行語句組成的 塊 return 返回值 其中,用 括起來的為可選擇部分,即可以使用,也可以省略。此格式中,各部...
nginx如何寫日誌
寫日誌函式為ngx log error core,位於src core ngx log.c 89行 核心 如下 while log void ngx write fd log file fd,errstr,p errstr if log file fd ngx stderr log log next...
python如何寫try語句
python的try語句有兩種風格 一是處理異常 try except else 二是無論是否發生異常都將執行最後的 try finally try except else風格 try 語句 執行的 except 名字 語句 如果在try部份引發了 name 異常 except 名字 資料 語句 如...