全網最適合入門的物件導向程式設計教程:12 類和物件的Python實現-Python使用logging模組輸出程式執行日誌

FreakStudio發表於2024-07-10

全網最適合入門的物件導向程式設計教程:12 類和物件的 Python 實現-Python 使用 logging 模組輸出程式執行日誌

摘要:

本文主要介紹了日誌的定義和作用,以及 Python 內建日誌處理的 logging 模組,同時簡單說明了日誌等級和 logging 模組的簡易使用方法。

原文連結:

FreakStudio 的部落格

往期推薦:

學嵌入式的你,還不會物件導向??!

全網最適合入門的物件導向程式設計教程:00 物件導向設計方法導論

全網最適合入門的物件導向程式設計教程:01 物件導向程式設計的基本概念

全網最適合入門的物件導向程式設計教程:02 類和物件的 Python 實現-使用 Python 建立類

全網最適合入門的物件導向程式設計教程:03 類和物件的 Python 實現-為自定義類新增屬性

全網最適合入門的物件導向程式設計教程:04 類和物件的Python實現-為自定義類新增方法

全網最適合入門的物件導向程式設計教程:05 類和物件的Python實現-PyCharm程式碼標籤

全網最適合入門的物件導向程式設計教程:06 類和物件的Python實現-自定義類的資料封裝

全網最適合入門的物件導向程式設計教程:07 類和物件的Python實現-型別註解

全網最適合入門的物件導向程式設計教程:08 類和物件的Python實現-@property裝飾器

全網最適合入門的物件導向程式設計教程:09 類和物件的Python實現-類之間的關係

全網最適合入門的物件導向程式設計教程:10 類和物件的Python實現-類的繼承和里氏替換原則

全網最適合入門的物件導向程式設計教程:11 類和物件的Python實現-子類呼叫父類方法

更多精彩內容可看:

給你的 Python 加加速:一文速通 Python 平行計算

一文搞懂 CM3 微控制器除錯原理

肝了半個月,嵌入式技術棧大彙總出爐

電子計算機類比賽的“武林秘籍”

一個MicroPython的開源專案集錦:awesome-micropython,包含各個方面的Micropython工具庫

文件和程式碼獲取:

可訪問如下連結進行對文件下載:

https://github.com/leezisheng/Doc

image

本文件主要介紹如何使用 Python 進行物件導向程式設計,需要讀者對 Python 語法和微控制器開發具有基本瞭解。相比其他講解 Python 物件導向程式設計的部落格或書籍而言,本文件更加詳細、側重於嵌入式上位機應用,以上位機和下位機的常見串列埠資料收發、資料處理、動態圖繪製等為應用例項,同時使用 Sourcetrail 程式碼軟體對程式碼進行視覺化閱讀便於讀者理解。

相關示例程式碼獲取連結如下:https://github.com/leezisheng/Python-OOP-Demo

正文

日誌是記錄系統中硬體、軟體和系統問題的資訊,同時還可以監視系統中發生的事件。使用者可以透過它來檢查錯誤發生的原因和程式執行歷史記錄。

在 python3 中,內建了 logging 模組,用於進行日誌相關的處理。日誌是一種可以追蹤某些軟體執行時所發生事件的方法。軟體開發人員可以向他們的程式碼中呼叫日誌記錄相關的方法來表明發生了某些事情。透過 log 的分析,可以方便使用者瞭解系統或軟體、應用的執行情況,日誌的作用可以簡單總結為以下 3 點:

  • ①程式除錯;
  • ②瞭解軟體程式執行情況,是否正常;
  • ③軟體程式執行故障分析與問題定位。

logging 模組預設定義了以下幾個日誌等級用於區別時間嚴重性:

  • ①DEBUG | 最詳細的日誌資訊,典型應用場景是問題診斷;
  • ②INFO | 資訊詳細程度僅次於DEBUG,通常只記錄關鍵節點資訊,用於確認一切都是按照我們預期的那樣進行工作;
  • ③WARNING | 當某些不期望的事情發生時記錄的資訊(如,磁碟可用空間較低),但是此時應用程式還是正常執行的;
  • ④ERROR | 由於一個更嚴重的問題導致某些功能不能正常執行時記錄的資訊;
  • ⑤CRITICAL | 當發生嚴重錯誤,導致應用程式不能繼續執行時記錄的資訊。

日誌優先順序:CRIRICAL>ERROR>WARNING>INFO>DEBUG,當日志級別設定為某個級別時,則低於該級別的日誌將不輸出。如日誌級別設定為 INFO,則 DEBUG 級別的日誌將不輸出。

這裡,我們設定日誌優先順序為 DEBUG 並使用 logging.info 方法輸出除錯資訊。

此時除錯資訊從終端輸出,也可以儲存為 log 檔案:

# 在配置下日誌輸出目標檔案和日誌格式_
LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
logging.basicConfig(filename='my.log', level=logging.DEBUG, format=LOG_FORMAT)

image

相關文章