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