當前位置:
首頁 > 最新 > Python之日誌處理-logging模塊使用教程

Python之日誌處理-logging模塊使用教程

Logging模塊

日誌記錄是跟蹤某些軟體運行時發生的事件的一種方法。該軟體的開發人員將日誌調用添加到代碼中,以表明發生了某些事件。事件由描述性消息描述,該消息可選地包含變數數據(例如,對於每個事件的發生可能不同的數據)。事件也具有開發人員將其歸因於事件的重要性;重要性也可以稱為級別或嚴重性。

日誌記錄基本方法

診斷問題。

確認代碼是否按預期工作。

表明一些意想不到的事情發生了,或說明一些問題在不久的將來(例如低磁碟空間)。

由於一個更嚴重的問題,程序沒能執行一些功能。

一個嚴重的錯誤,這表明程序本身可能無法繼續運行。

舉個栗子


執行輸出:

可以看出logging默認Log級別為。

將日誌記錄到文件

執行後,腳本當前目錄會多一個文件。

進階

logging庫採用了模塊化的方式,提供了4種類別的組件,分別為: and 。

loggers 提供應用程序代碼直接使用的介面。

handlers 用於將日誌記錄發送到指定的目的位置。

filters 提供更細粒度的日誌過濾功能,用於決定哪些日誌記錄將會被輸出(其它的日誌記錄將會被忽略)。

formatters 用於控制日誌信息的最終輸出格式。

loggers

loggers對象有三個功能,首先是向公開方法,方便程序運行時記錄日誌。其次是根據日誌級別來篩選日誌,最後,將日誌傳給符合的handlers。

logger.setLevel() 設置日誌級的級別。

logger.addHandler() 從loggers對象中添加handlers對象。

logger.removeHandler() 從loggers對象中刪除handlers對象。

logger.addFilter() 從loggers對象中添加filters對象。

logger.removeFilter() 從loggers對象中刪除filters對象。

handlers

handler 負責將特定程度的日誌級別發送消息到一個特定的位置。

handler.setLevel() 設置日誌級的級別,為什麼會有兩個設置日誌級別?logger設置的級別是確定哪種級別的消息將傳遞給handler,handler設置的級別是確定發送哪種級別的消息。

handler.setFormatter() 設置handler的formatter對象。

addFilter() 將Filter對象添加到handler對象上。

removerFilter() 從handler對象上移除Filter對象。

formatters

格式化程序對象配置日誌消息的最終順序、結構和內容。

filters

Filter可以被Handler和Logger用來做比level更細粒度的、更複雜的過濾功能。Filter是一個過濾器基類,它只允許某個logger層級下的日誌事件通過過濾。

示例代碼

執行後輸出

使用配置的方式:

下面是log.conf文件

py文件

執行後和上面的輸出的結果一樣。

配置文件的方式相比代碼的方式有以下的優點:

代碼看上去更加整潔,便於閱讀

配置的方式以後修改只需改配置文件,不需要更改代碼

實例

現在有以下幾個日誌記錄的需求:

要求將所有級別的所有日誌都寫入磁碟文件中。

all.log文件中記錄所有的日誌信息,日誌格式為:日期和時間 - 日誌級別 - 日誌信息。

error.log文件中單獨記錄error及以上級別的日誌信息,日誌格式為:日期和時間 - 日誌級別 - 文件名[:行號] - 日誌信息。

要求all.log在每天凌晨進行日誌切割。

all.log

error.log

End

如果你覺得還不錯,那就點個贊吧

聽說喜歡留言、分享的人

運氣都不會差

python筆記俠


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

C#使用Python腳本應用-傳參和獲取返回值
Python程序如何打包成exe

TAG:Python |