Python中使用logging和traceback模塊記錄日志和跟蹤異常
logging模塊
logging模塊用于輸出運(yùn)行日志,可以設(shè)置不同的日志等級(jí),保存信息到日志文件中等。 相比print,logging可以設(shè)置日志的等級(jí),控制在發(fā)布版本中的輸出內(nèi)容,并且可以指定日志的輸出格式。
1. 使用logging在終端輸出日志
#!/usr/bin/env python # -*- coding:utf-8 -*- import logging # 引入logging模塊 # 設(shè)置打印日志級(jí)別 CRITICAL > ERROR > WARNING > INFO > DEBUG logging.basicConfig(level = logging.DEBUG,format = '%(asctime)s - %(name)s -%(filename)s[line:%(lineno)d] - %(levelname)s - %(message)s') # 將信息打印到控制臺(tái)上 logging.debug(u"調(diào)試") logging.info(u"執(zhí)行打印功能") logging.warning(u"警告") logging.error(u"錯(cuò)誤") logging.critical(u"致命錯(cuò)誤")
輸出
2. 使用logging在終端輸出日志,並保存日志到本地log文件
#!/usr/bin/env python # -*- coding:utf-8 -*- import logging # 引入logging模塊 import os.path # 第一步,創(chuàng)建一個(gè)logger logger = logging.getLogger() logger.setLevel(logging.DEBUG) # Log等級(jí)開(kāi)關(guān) # 第二步,創(chuàng)建一個(gè)handler,用于寫(xiě)入日志文件 log_path = os.path.dirname(os.getcwd()) + '/Logs/' log_name = log_path + 'log.log' logfile = log_name file_handler = logging.FileHandler(logfile, mode='a+') file_handler.setLevel(logging.ERROR) # 輸出到file的log等級(jí)的開(kāi)關(guān) # 第三步,定義handler的輸出格式 formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s") file_handler.setFormatter(formatter) # 第四步,將handler添加到logger里面 logger.addHandler(file_handler) # 如果需要同時(shí)需要在終端上輸出,定義一個(gè)streamHandler print_handler = logging.StreamHandler() # 往屏幕上輸出 print_handler.setFormatter(formatter) # 設(shè)置屏幕上顯示的格式 logger.addHandler(print_handler) # 日志信息 logger.debug('this is a logger debug message') logger.info('this is a logger info message') logger.warning('this is a logger warning message') logger.error('this is a logger error message') logger.critical('this is a logger critical message') # 或使用logging logging.debug('this is a logger debug message') logging.info('this is a logger info message') logging.warning('this is a logger warning message') logging.error('this is a logger error message') logging.critical('this is a logger critical message')
日志等級(jí)劃分
- FATAL:致命錯(cuò)誤
- CRITICAL:特別糟糕的事情,如內(nèi)存耗盡、磁盤(pán)空間為空,一般很少使用
- ERROR:發(fā)生錯(cuò)誤時(shí),如IO操作失敗或者連接問(wèn)題
- WARNING:發(fā)生很重要的事件,但是并不是錯(cuò)誤時(shí),如用戶(hù)登錄密碼錯(cuò)誤
- INFO:處理請(qǐng)求或者狀態(tài)變化等日常事務(wù)
- DEBUG:調(diào)試過(guò)程中使用DEBUG等級(jí),如算法中每個(gè)循環(huán)的中間狀態(tài)
traceback模塊
traceback是python中用來(lái)跟蹤異常信息的模塊,方便把程序中的運(yùn)行異常打印或者保存下來(lái)做異常分析。
常見(jiàn)用法
try: doSomething() except: traceback.print_exc() # logging.error(str(traceback.format_exc()))
traceback.format_exc() 與 traceback.print_exc() 區(qū)別:
- traceback.format_exc() 返回異常信息的字符串,可以用來(lái)把信息記錄到log里;
- traceback.print_exc() 直接把異常信息在終端打印出來(lái);
traceback.print_exc()
也可以實(shí)現(xiàn)把異常信息寫(xiě)入文件,使用方法:
traceback.print_exc(file=open('traceback_INFO.txt','w+'))
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- Python traceback模塊獲取異常信息的使用
- 解決python問(wèn)題 Traceback (most recent call last)
- python如何利用traceback獲取詳細(xì)的異常信息
- Python基于traceback模塊獲取異常信息
- 淺談python出錯(cuò)時(shí)traceback的解讀
- Python 輸出詳細(xì)的異常信息(traceback)方式
- python3 使用traceback定位異常實(shí)例
- 基于python traceback實(shí)現(xiàn)異常的獲取與處理
- Python異常模塊traceback用法實(shí)例分析
- 搞清楚 Python traceback的具體使用方法
- 淺談Python traceback的優(yōu)雅處理
- python traceback捕獲并打印異常的方法
- Python?Traceback(most?recent?call?last)報(bào)錯(cuò)信息:示例解讀
相關(guān)文章
解決python運(yùn)行啟動(dòng)報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了解決python運(yùn)行啟動(dòng)報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06基于python批量處理dat文件及科學(xué)計(jì)算方法詳解
今天小編就為大家分享一篇基于python批量處理dat文件及科學(xué)計(jì)算方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05python統(tǒng)計(jì)字母、空格、數(shù)字等字符個(gè)數(shù)的實(shí)例
今天小編就為大家分享一篇python統(tǒng)計(jì)字母、空格、數(shù)字等字符個(gè)數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Python識(shí)別html主要文本框過(guò)程解析
這篇文章主要介紹了python識(shí)別html主要文本框過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02python單例模式之selenium driver實(shí)現(xiàn)單例
這篇文章主要介紹了python單例模式之selenium driver實(shí)現(xiàn)單例,使用裝飾器實(shí)現(xiàn)單例,文章基于python的相關(guān)資料實(shí)現(xiàn)主題,具有一的的參考價(jià)值,需要的朋友可以參考一下2022-03-03python vertibi算法實(shí)現(xiàn)原理解析
這篇文章主要為大家介紹了python vertibi算法實(shí)現(xiàn)原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07python數(shù)據(jù)分析基礎(chǔ)知識(shí)之shape()函數(shù)的使用教程
shape函數(shù)是numpy.core.fromnumeric中的函數(shù),它的功能是讀取矩陣的長(zhǎng)度,比如shape[0]就是讀取矩陣第一維度的長(zhǎng)度,下面這篇文章主要給大家介紹了關(guān)于python數(shù)據(jù)分析基礎(chǔ)知識(shí)之shape()函數(shù)使用的相關(guān)資料,需要的朋友可以參考下2022-09-09Python實(shí)現(xiàn)讀取json文件到excel表
這篇文章主要介紹了Python實(shí)現(xiàn)讀取json文件到excel表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11Django進(jìn)階深入理解使用類(lèi)視圖和中間件示例
這篇文章主要為大家介紹了Django高級(jí)指南之深入理解和使用類(lèi)視圖和中間件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08