Python日志記錄系統 Python日志模塊配置與使用教程

pythonLogging模塊可通過配置實現多場景日志管理。1. 導入logging模塊并調用方法可記錄日志,默認輸出warning及以上級別,通過basicconfig設置level參數可調整輸出范圍;2. 使用format參數自定義日志格式,加入時間、級別、模塊名等內容,并可通過filename參數將日志寫入文件;3. 大型項目中應為不同模塊創建獨立logger,便于管理和調試,也可單獨設置模塊日志級別;4. 需要同時輸出到控制臺和文件時,應手動添加streamhandler和filehandler,并分別設定級別和格式,實現靈活的日志收集與展示。掌握這些配置后,即可高效使用logging模塊滿足各類項目需求。

Python日志記錄系統 Python日志模塊配置與使用教程

python自帶的日志模塊logging功能強大,但剛上手時配置起來有點繞。很多人一開始只是簡單用一下print()調試代碼,但一旦項目變大或者部署上線后,光靠print就不夠用了。這時候就需要一個穩定、可配置、結構清晰的日志系統。


日志模塊基本使用:別再只用print了

在Python中,最基礎的日志記錄方式就是導入logging模塊并調用相應的方法:

import logging  logging.warning('這是一個警告信息')

這樣會在控制臺輸出一條日志,包含時間、級別、消息等內容。默認情況下,只有WARNING及以上級別的日志會被顯示出來,比如Error和CRITICAL。

立即學習Python免費學習筆記(深入)”;

你可以通過設置日志級別來控制輸出范圍:

logging.basicConfig(level=logging.DEBUG)

這樣就能看到從DEBUG開始的所有日志。這個設置一般放在程序啟動時執行一次就行。


配置日志格式:讓日志信息更清晰

默認的輸出格式比較簡單,可能不滿足實際需求。我們可以通過basicConfig來自定義日志格式:

logging.basicConfig(     format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',     level=logging.INFO )

上面這段配置會顯示時間戳、logger名稱、日志級別和消息內容。如果你希望把日志寫入文件而不是控制臺,也可以加上filename參數:

logging.basicConfig(     filename='app.log',     filemode='a',     format='%(asctime)s - %(levelname)s - %(message)s',     level=logging.INFO )

注意filemode默認是’a’,表示追加寫入。如果你想每次運行都覆蓋舊日志,可以改成’w’。


多個模塊使用日志:合理組織logger層級

在一個大型項目中,不同模塊應該使用不同的logger,這樣便于分類管理和定位問題。例如:

# module_a.py import logging  logger = logging.getLogger(__name__) logger.info("模塊A開始工作")
# module_b.py import logging  logger = logging.getLogger(__name__) logger.info("模塊B開始工作")

如果主程序設置了根logger的級別為INFO,這兩個模塊的日志都會正常輸出。你還可以單獨為某個模塊設置級別:

logging.getLogger('module_a').setLevel(logging.WARNING)

這樣module_a就只會輸出WARNING及以上的日志,而其他模塊不受影響。


日志輸出到多個地方:控制臺+文件一起用

有時候你想讓日志既顯示在控制臺又寫入文件。這時就不能只用basicConfig了,需要手動添加多個Handler:

import logging  logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG)  # 控制臺輸出 console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO)  # 文件輸出 file_handler = logging.FileHandler('debug.log') file_handler.setLevel(logging.DEBUG)  # 設置格式 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') console_handler.setFormatter(formatter) file_handler.setFormatter(formatter)  # 添加handler logger.addHandler(console_handler) logger.addHandler(file_handler)  # 測試日志 logger.debug('這是一條debug信息')  # 只寫入文件 logger.info('這是一條info信息')    # 控制臺和文件都有

這樣做的好處是不同渠道的日志級別可以分開控制,適合開發環境和生產環境的混合使用場景。


基本上就這些。Python的logging模塊雖然剛開始有點復雜,但只要掌握了基本配置方式,就可以靈活應對各種項目需求了。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享