記錄 python 程序日志的推薦方式是使用內置 Logging 模塊。1. 基本用法:調用 logging.basicconfig() 配合 info、warning 等方法輸出日志,默認只顯示 warning 及以上級別,需設置 level=logging.info 才能顯示 info 級別;常用級別按從低到高順序為 debug、info、warning(默認)、Error、critical。2. 進階配置:通過 basicconfig 設置 filename 將日志寫入文件,通過 format 定義格式并添加時間戳等信息。3. 多模塊打日志:使用 getlogger 創建不同 logger 并設置獨立級別和輸出格式,便于區分來源與管理。4. 注意事項:避免混用 print 與 logging,防止重復添加 handler 導致重復輸出,生產環境建議關閉 debug 級別以提升性能。logging 功能全面,建議先掌握基礎再逐步深入。
記錄 python 程序的日志,最常用也最推薦的方式就是使用內置的 logging 模塊。它功能全面、配置靈活,能滿足大多數項目的日志需求。
基本用法:快速上手
剛開始用 logging 的時候,直接調用 logging.basicConfig() 配合幾個常用的日志輸出方法就能滿足基本需求。
import logging logging.basicConfig(level=logging.INFO) logging.info("這是一條信息日志") logging.warning("這是一條警告日志")
這樣會把日志輸出到控制臺,默認只顯示 WARNING 及以上級別。如果你想看到 INFO 級別的日志,記得設置 level=logging.INFO。
立即學習“Python免費學習筆記(深入)”;
常用日志級別從低到高分別是:
- DEBUG
- INFO
- WARNING(默認)
- ERROR
- CRITICAL
進階配置:格式和輸出位置
如果你希望日志有更清晰的格式,或者想保存到文件里,就需要對 basicConfig 做進一步配置。
比如下面這個例子,把日志寫入文件,并加上時間戳:
logging.basicConfig( filename="app.log", level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s" )
這樣你就可以在 app.log 文件中看到類似這樣的內容:
2025-04-05 10:30:00,123 - INFO - 這是一條信息日志 2025-04-05 10:30:05,456 - ERROR - 出錯了!
關鍵參數說明:
- filename:指定日志文件名
- format:定義日志格式
- datefmt:可選,自定義時間格式
多個模塊/組件打日志:使用 logger 名字
當項目變大后,建議為不同模塊創建不同的 logger,方便區分日志來源。
logger = logging.getLogger("my_module") logger.setLevel(logging.DEBUG) handler = logging.FileHandler("my_module.log") formatter = logging.Formatter("%(name)s - %(levelname)s - %(message)s") handler.setFormatter(formatter) logger.addHandler(handler) logger.debug("來自 my_module 的調試信息")
這種方式的好處是:
- 可以為不同模塊設置不同的日志級別或輸出方式
- 日志結構更清晰,排查問題更快捷
常見注意事項
- 不要混用 print 和 logging:上線后應該統一用 logging,print 不便于管理。
- 避免重復添加 handler:多次運行腳本時,可能會導致日志重復輸出,可以在添加前判斷是否已有 handler。
- 生產環境建議關閉 DEBUG 級別:避免產生大量日志影響性能。
基本上就這些。logging 模塊功能很全,但一開始不需要全掌握,先學會基礎用法,遇到具體需求再深入研究。