python中日誌及logging 模組

2021-09-19 09:11:56 字數 2003 閱讀 8373

日誌相關概念

日誌是一種可以追蹤某些軟體執行時所發生事件的方法

軟體開發人員可以向他們的**中呼叫日誌記錄相關的方法來表明發生了某些事情

乙個事件可以用乙個可包含可選變數資料的訊息來描述

此外,事件也有重要性的概念,這個重要性也可以被稱為嚴重性級別(level)

日誌的作用

通過log的分析,可以方便使用者了解系統或軟體、應用的運**況;

如果你的應用log足夠豐富,也可以分析以往使用者的操作行為、型別喜好、地域分布或其他更多資訊;

如果乙個應用的log同時也分了多個級別,那麼可以很輕易地分析得到該應用的健康狀況,及時發現問題並快速定位、解決問題,補救損失。

簡單來講就是

我們通過記錄和分析日誌可以了解乙個系統或軟體程式運**況是否正常,

也可以在應用程式出現故障時快速定位問題。

不僅在開發中,在運維中日誌也很重要

日誌的作用可以簡單總結為以下幾點:

程式除錯

了解軟體程式運**況,是否正常

軟體程式執行故障分析與問題定位

如果應用的日誌資訊足夠詳細和豐富,還可以用來做使用者行為分析

日誌的等級

我們先來思考下下面的兩個問題:

作為開發人員,在開發乙個應用程式時需要什麼日誌資訊?在應用程式正式上線後需要什麼日誌資訊?

作為應用運維人員,在部署開發環境時需要什麼日誌資訊?在部署生產環境時需要什麼日誌資訊?

在軟體開發階段或部署開發環境時,為了盡可能詳細的檢視應用程式的執行狀態來保證上線後的穩定性,我們可能需要把該應用程式所有的執行日誌全部記錄下來進行分析,這是非常耗費機器效能的

當應用程式正式發布或在生產環境部署應用程式時,我們通常只需要記錄應用程式的異常資訊、錯誤資訊等,這樣既可以減小伺服器的i/o壓力,也可以更加方便的進行故障排查。

那麼,怎樣才能在不改動應用程式**的情況下實現在不同的環境記錄不同詳細程度的日誌呢?這就是日誌等級的作用了,我們通過配置檔案指定我們需要的日誌等級就可以了。

不同的應用程式所定義的日誌等級可能會有所差別,分的詳細點的會包含以下幾個等級:

fatal/critical = 重大的,危險的

error = 錯誤

warning = 警告

info = 資訊

debug = 除錯

notset = 沒有設定

日誌字段資訊與日誌格式

輸出一條日誌時,日誌內容和日誌級別是需要開發人員明確指定的。對於而其它字段資訊,只需要是否顯示在日誌中就可以了。

日誌功能的實現

python 自身提供了乙個用於記錄日誌的標準庫模組:logging。

logging 模組

logging 模組定義的函式和類為應用程式和庫的開發實現了乙個靈活的事件日誌系統

logging 模組是 python 的乙個標準庫模組,由標準庫模組提供日誌記錄 api 的關鍵好處是所有 python 模組都可以使用這個日誌記錄功能。

logging 模組的日誌級別

logging模組預設定義了以下幾個日誌等級,它允許開發人員自定義其他日誌級別,但是這是不被推薦的,尤其是在開發供別人使用的庫時,因為這會導致日誌級別的混亂。

debug 最詳細的日誌資訊,典型應用場景是 問題診斷

info 資訊詳細程度僅次於debug,通常只記錄關鍵節點資訊,用於確認一切都是按照我們預期的那樣進行工作

warning 當某些不期望的事情發生時記錄的資訊(如,磁碟可用空間較低),但是此時應用程式還是正常執行的

error 由於乙個更嚴重的問題導致某些功能不能正常執行時記錄的資訊

fatal/critical 整個系統即將/完全崩潰

開發應用程式或部署開發環境時,可以使用 debug 或 info 級別的日誌獲取盡可能詳細的日誌資訊來進行開發或部署除錯;

應用上線或部署生產環境時,應該使用 warning 或 error 或 critical 級別的日誌來降低機器的i/o壓力和提高獲取錯誤日誌資訊的效率。

日誌級別的指定通常都是在應用程式的配置檔案中進行指定的。

logging 模組的使用方式介紹

PythonStudy 日誌模組 logging

日誌 日之石日常的流水,將程式執行過程中的狀態或資料盡心記錄,一般是記錄到日誌檔案當中的。在正常的專案之中,專案的執行的一些列印資訊,採用logging列印到檔案當中,這個過程就稱作為 日誌記錄模組 以下為預設的操作日誌模組 匯入日誌模組 import logging logging為預設列印者,是...

python中日誌配置與使用 1

和在學校做大作業 畢業設計不同,一旦到了生產環境,查詢問題 服務監控等操作都需要通過日誌來完成了。以前的專案,更多的是從其他同事手中交接一些服務,服務中已經積攢了一些 無論好壞 打日誌的規範和方法。近期 其實已經一年了,一直懶得總結 由於排期問題,我糙猛快的寫了幾個python的服務 而我之前的同事...

Python中日誌的格式化輸出

import logging logfile e a.txt logging.basicconfig filename logfile,level logging.info logging.basicconfig format time.asctime s message s datefmt m d...