全網最適合入門的面向對象編程教程:12 類和對象的 Python 實現-Python 使用 logging 模塊輸出程序運行日志
摘要:
本文主要介紹了日志的定義和作用,以及 Python 內置日志處理的 logging 模塊,同時簡單說明了日志等級和 logging 模塊的簡易使用方法。
原文鏈接:
FreakStudio 的博客
往期推薦:
可能是全網最適合入門的面向對象編程教程:Python實現-嵌入式愛好者必看!
全網最適合入門的面向對象編程教程: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實現-子類調用父類方法
更多精彩內容可看:
CM3調試系統簡析
肝了半個月,嵌入式技術棧大匯總出爐
比賽獲獎的武林秘籍:05 電子計算機類比賽國獎隊伍技術如何分工和學習內容
比賽獲獎的武林秘籍:04 電子類比賽嵌入式開發快速必看的上手指南
比賽獲獎的武林秘籍:03 好的創意選取-獲得國獎的最必要前提
比賽獲獎的武林秘籍:02 國獎秘籍-大學生電子計算機類競賽快速上手的流程,小白必看
比賽獲獎的武林秘籍:01 如何看待當代大學生競賽中“卷”“祖傳老項目”“找關系”的現象?
比賽獲獎的武林秘籍:00 學科競賽-工科類大學生繞不開的話題,你了解多少?
電子計算機類比賽的“武林秘籍”-電賽光電設計大賽計算機設計大賽嵌入式芯片與系統設計競賽,你要的都在這里!
文檔和代碼獲取:
可訪問如下鏈接進行對文檔下載:
https://github.com/leezisheng/Doc
本文檔主要介紹如何使用 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)