iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0
Python

從Python入門到自製遊戲:30天鐵人挑戰之旅系列 第 20

日誌 (Logging) 與除錯技巧

  • 分享至 

  • xImage
  •  

今天沒假可放了,照常打稿,來學習小技巧。/images/emoticon/emoticon13.gif

在開發 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() 來進行除錯後,我覺得整體開發流程變得更有系統了。透過日誌等級的設定,我可以快速過濾不需要的資訊,聚焦在真正需要處理的問題上,減少了因為過多輸出而造成的視覺干擾。

那今天就先這樣。/images/emoticon/emoticon29.gif


上一篇
Pandas 與 Numpy 資料分析
下一篇
遊戲設定與環境配置
系列文
從Python入門到自製遊戲:30天鐵人挑戰之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言