python logging日志打印過程解析
一、 基礎(chǔ)使用
1.1 logging使用場景
日志是什么?這個不用多解釋。百分之九十的程序都需要提供日志功能。Python內(nèi)置的logging模塊,為我們提供了現(xiàn)成的高效好用的日志解決方案。但是,不是所有的場景都需要使用logging模塊,下面是Python官方推薦的使用方法:
任務(wù)場景 | 最佳工具 |
---|---|
普通情況下,在控制臺顯示輸出 | print() |
報告正常程序操作過程中發(fā)生的事件 | logging.info()(或者更詳細的logging.debug()) |
發(fā)出有關(guān)特定事件的警告 | warnings.warn()或者logging.warning() |
報告錯誤 | 彈出異常 |
在不引發(fā)異常的情況下報告錯誤 | logging.error(), logging.exception()或者logging.critical() |
logging模塊定義了下表所示的日志級別,按事件嚴(yán)重程度由低到高排列(注意是全部大寫!因為它們是常量。):
級別 | 級別數(shù)值 | 使用時機 |
---|---|---|
DEBUG | 10 | 詳細信息,常用于調(diào)試。 |
INFO | 20 | 程序正常運行過程中產(chǎn)生的一些信息。 |
WARNING | 30 | 警告用戶,雖然程序還在正常工作,但有可能發(fā)生錯誤。 |
ERROR | 40 | 由于更嚴(yán)重的問題,程序已不能執(zhí)行一些功能了。 |
CRITICAL | 50 | 嚴(yán)重錯誤,程序已不能繼續(xù)運行。 |
默認級別是WARNING,表示只有WARING和比WARNING更嚴(yán)重的事件才會被記錄到日志內(nèi),低級別的信息會被忽略。因此,默認情況下,DEBUG和INFO會被忽略,WARING、ERROR和CRITICAL會被記錄。
有多種方法用來處理被跟蹤的事件。最簡單的方法就是把它們打印到終端控制臺上?;蛘邔⑺鼈儗懭胍粋€磁盤文件內(nèi)。
1.2 簡單范例
在什么都不配置和設(shè)定的情況下,logging會簡單地將日志打印在顯示器上,如下例所示:
import logging logging.warning('Watch out!') # 消息會被打印到控制臺上 logging.info('I told you so') # 這行不會被打印,因為級別低于默認級別
如果,將上面的代碼放在一個腳本里并運行,結(jié)果是:
WARNING:root:Watch out!
1.3 高級使用
import logging #創(chuàng)建logger記錄器 logging.basicConfig(filename='example.log',level=logging.DEBUG) logger = logging.getLogger('simple_example') logger.setLevel(logging.DEBUG) #創(chuàng)建一個控制臺處理器,并將日志級別設(shè)置為debug ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) #創(chuàng)建formatter格式化器 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') #將formatter 添加到ch處理器 ch.setFormatter(formatter) #將ch添加到logger logger.addHandler(ch) #然后就可以開始使用了 # logger.debug('debug message') #logger.info('info message') # logger.warning('warn message') # logger.error('error message') # logger.critical('critical message') def Logss(): #要打印的信息 a = "3" logger.info(a) Logss()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python 實現(xiàn)Image和Ndarray互相轉(zhuǎn)換
今天小編就為大家分享一篇Python 實現(xiàn)Image和Ndarray互相轉(zhuǎn)換,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02numpy求矩陣的特征值與特征向量(np.linalg.eig函數(shù)用法)
這篇文章主要介紹了numpy求矩陣的特征值與特征向量(np.linalg.eig函數(shù)用法),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02python中利用Future對象異步返回結(jié)果示例代碼
future是一種對象,表示異步執(zhí)行的操作。下面這篇文章主要給大家介紹了關(guān)于python中利用Future對象異步返回結(jié)果的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09Tensorflow使用Anaconda、pycharm安裝記錄
這篇文章主要介紹了Tensorflow使用Anaconda、pycharm安裝記錄,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07