Python 中的日誌記錄不僅僅是調試,它還涉及追蹤、監控和了解應用程式的行為。無論您是初學者還是經驗豐富的開發人員,本指南涵蓋了日誌記錄的各個方面,從基本設定到高級技術。
簡介
什麼是日誌記錄?
日誌記錄是一種在程式執行過程中記錄和追蹤事件的機制,可幫助開發人員有效地偵錯、監控和分析他們的應用程式。
為什麼日誌記錄很重要?
與列印不同,日誌記錄提供靈活性、可擴展性和可配置性,使其成為小型腳本和大型應用程式的可靠選擇。
這個部落格的內容
設定基本日誌記錄
將日誌寫入檔案
建立自訂記錄器
格式化日誌輸出
日誌輪換和配置等高級技術
最佳實務與常見錯誤
Python 中的日誌記錄是什麼?
引入日誌記錄模組。
解釋日誌記錄等級:
DEBUG:診斷問題的詳細資訊。
訊息:確認程式如預期運作。
警告:發生了意外情況,但程式仍然可以運行。
錯誤:出現問題導致操作失敗。
嚴重:可能會停止程式的嚴重錯誤。
設定基本日誌記錄
引入logging.basicConfig.
舉個簡單的例子:
import logging # Basic configuration logging.basicConfig(level=logging.INFO) # Logging messages logging.debug("Debug message") logging.info("Info message") logging.warning("Warning message") logging.error("Error message") logging.critical("Critical message")
輸出
預設情況下,控制台上僅顯示警告等級或以上等級的訊息。上面的例子產生:
警告:root:警告訊息
錯誤:根:錯誤訊息
關鍵:根:關鍵消息
將日誌寫入檔案
logging.basicConfig(filename="app.log", level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s") logging.info("This will be written to a file.")
解釋basicConfig中的常用參數:
檔名:指定日誌檔。
檔案模式:「w」用於覆蓋或「a」用於追加。
格式:自訂日誌訊息結構。
建立自訂記錄器
為什麼要使用自訂記錄器?用於模組化和更受控的日誌記錄。
例:
import logging # Create a custom logger logger = logging.getLogger("my_logger") logger.setLevel(logging.DEBUG) # Create handlers console_handler = logging.StreamHandler() file_handler = logging.FileHandler("custom.log") # Set levels for handlers console_handler.setLevel(logging.INFO) file_handler.setLevel(logging.ERROR) # Create formatters and add them to handlers formatter = logging.Formatter("%(name)s - %(levelname)s - %(message)s") console_handler.setFormatter(formatter) file_handler.setFormatter(formatter) # Add handlers to the logger logger.addHandler(console_handler) logger.addHandler(file_handler) # Log messages logger.info("This is an info message.") logger.error("This is an error message.")
** 格式化日誌**
解釋日誌記錄屬性:
%(asctime)s: 時間戳記。
%(levelname)s: 日誌訊息的等級。
%(message)s: 實際的日誌訊息。
%(name)s: 記錄者的名字。
進階格式化:
logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S", level=logging.DEBUG)
日誌輪替
引入 RotatingFileHandler 來管理日誌檔案大小。
例:
from logging.handlers import RotatingFileHandler # Create a logger logger = logging.getLogger("rotating_logger") logger.setLevel(logging.DEBUG) # Create a rotating file handler handler = RotatingFileHandler("app.log", maxBytes=2000, backupCount=3) formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") handler.setFormatter(formatter) logger.addHandler(handler) # Log messages for i in range(100): logger.info(f"Message {i}")
使用logging.config進行複雜設定
示範如何使用設定字典:
import logging # Basic configuration logging.basicConfig(level=logging.INFO) # Logging messages logging.debug("Debug message") logging.info("Info message") logging.warning("Warning message") logging.error("Error message") logging.critical("Critical message")
日誌記錄的最佳實踐
使用有意義的日誌訊息。
避免日誌中存在敏感資料。
在開發中使用 DEBUG 級別,在生產中使用更高級別。
輪換日誌檔案以防止儲存問題。
為不同的模組使用唯一的記錄器名稱。
常見錯誤
在生產中過度使用 DEBUG。
忘記關閉文件處理程序。
不使用單獨的錯誤日誌檔案。
進階主題
非同步日誌記錄
對於高效能應用程序,請使用 QueueHandler 非同步卸載日誌記錄任務。
結構化日誌記錄
將訊息記錄為 JSON 以便機器可讀,尤其是對於 ELK Stack 這樣的系統。
第三方函式庫
探索像 loguru 這樣的工具,以實現更簡單、更強大的日誌記錄。
結論
日誌記錄不僅與調試有關,還與了解您的應用程式有關。透過掌握Python的日誌模組,您可以確保您的專案健壯、可維護且易於調試。
有疑問或建議嗎?在下面的評論中分享你的想法!
以上是掌握 Python 日誌記錄:從基礎知識到進階技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本教程演示如何使用Python處理Zipf定律這一統計概念,並展示Python在處理該定律時讀取和排序大型文本文件的效率。 您可能想知道Zipf分佈這個術語是什麼意思。要理解這個術語,我們首先需要定義Zipf定律。別擔心,我會盡量簡化說明。 Zipf定律 Zipf定律簡單來說就是:在一個大型自然語言語料庫中,最頻繁出現的詞的出現頻率大約是第二頻繁詞的兩倍,是第三頻繁詞的三倍,是第四頻繁詞的四倍,以此類推。 讓我們來看一個例子。如果您查看美國英語的Brown語料庫,您會注意到最頻繁出現的詞是“th

本文解釋瞭如何使用美麗的湯庫來解析html。 它詳細介紹了常見方法,例如find(),find_all(),select()和get_text(),以用於數據提取,處理不同的HTML結構和錯誤以及替代方案(SEL)

處理嘈雜的圖像是一個常見的問題,尤其是手機或低分辨率攝像頭照片。 本教程使用OpenCV探索Python中的圖像過濾技術來解決此問題。 圖像過濾:功能強大的工具圖像過濾器

PDF 文件因其跨平台兼容性而廣受歡迎,內容和佈局在不同操作系統、閱讀設備和軟件上保持一致。然而,與 Python 處理純文本文件不同,PDF 文件是二進製文件,結構更複雜,包含字體、顏色和圖像等元素。 幸運的是,借助 Python 的外部模塊,處理 PDF 文件並非難事。本文將使用 PyPDF2 模塊演示如何打開 PDF 文件、打印頁面和提取文本。關於 PDF 文件的創建和編輯,請參考我的另一篇教程。 準備工作 核心在於使用外部模塊 PyPDF2。首先,使用 pip 安裝它: pip 是 P

本教程演示瞭如何利用Redis緩存以提高Python應用程序的性能,特別是在Django框架內。 我們將介紹REDIS安裝,Django配置和性能比較,以突出顯示BENE

本文比較了Tensorflow和Pytorch的深度學習。 它詳細介紹了所涉及的步驟:數據準備,模型構建,培訓,評估和部署。 框架之間的關鍵差異,特別是關於計算刻度的

Python是數據科學和處理的最愛,為高性能計算提供了豐富的生態系統。但是,Python中的並行編程提出了獨特的挑戰。本教程探討了這些挑戰,重點是全球解釋

本教程演示了在Python 3中創建自定義管道數據結構,利用類和操作員超載以增強功能。 管道的靈活性在於它能夠將一系列函數應用於數據集的能力,GE


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1
強大的PHP整合開發環境