今天沒假可放了,照常打稿,來學習小技巧。
在開發 Python 程式時,print() 通常是初學者最常用的除錯工具。然而當專案變得更加複雜時,print() 的局限性也逐漸顯現,這時候使用 logging 模組來記錄程式執行狀況就成為更有效率的選擇。logging 模組提供了比 print() 更靈活的紀錄方式。它允許開發者設定不同的日誌等級(如 DEBUG、INFO、WARNING、ERROR、CRITICAL),並將訊息輸出到多種目標(如檔案、終端機或網路)。透過這樣的方式,我們可以更有條理地管理日誌訊息,並根據需求調整紀錄的詳細程度。我們可以在開發環境中使用 DEBUG 等級來追蹤細節,但在正式環境中則只紀錄 WARNING 以上的錯誤訊息,以保持日誌的精簡。
logging 的另一個優勢在於其格式化功能。我們可以自定義訊息的格式,如加入時間戳、日誌等級、模組名稱等等,這有助於快速定位問題。當我們看到某個時間點出現多次 ERROR 訊息時,可以輕易找出是哪些函式或模組引起的問題,並迅速進行修復。以下是 logging 模組的一個簡單範例,透過這個範例,我們可以看到各種等級的日誌輸出,並根據需求進行調整。若希望將日誌輸出至檔案而非終端機,只需在 basicConfig() 中指定 filename 參數即可。
import logging
# 設定日誌基本設定,指定輸出格式及最低記錄等級
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
# 測試各種日誌等級
logging.debug('這是一條 debug 訊息,通常用於診斷問題')
logging.info('這是一條 info 訊息,表示程式正常運行')
logging.warning('這是一條 warning 訊息,表示可能發生問題')
logging.error('這是一條 error 訊息,表示發生錯誤')
logging.critical('這是一條 critical 訊息,表示嚴重錯誤,可能導致程式中斷')
實務中 logging 的應用不僅限於除錯,還可以用來監控程式運行狀況、記錄使用者行為、分析效能問題等。在多執行緒或大型系統中,logging 更是不可或缺的工具。透過合理規劃與管理日誌,可以大幅提升除錯效率,並為程式開發的每個階段提供有效的支持。
使用 logging 取代 print() 來進行除錯後,我覺得整體開發流程變得更有系統了。透過日誌等級的設定,我可以快速過濾不需要的資訊,聚焦在真正需要處理的問題上,減少了因為過多輸出而造成的視覺干擾。
那今天就先這樣。