Python打印詳細(xì)報(bào)錯(cuò)日志,獲取報(bào)錯(cuò)信息位置行數(shù)方式
Python打印詳細(xì)報(bào)錯(cuò)日志,獲取報(bào)錯(cuò)信息位置行數(shù)
源于: 功能類代碼 – Logsetclass.py
網(wǎng)上代碼1
# 日志模塊
import logging
import traceback
# 引入日志
logging.basicConfig(filename='log_record.txt',
level=logging.DEBUG, filemode='w', format='[%(asctime)s] [%(levelname)s] >>> %(message)s',
datefmt='%Y-%m-%d %I:%M:%S')
try:
print(a+1) # 放主要代碼
except Exception as e:
logging.error("Main program error:")
logging.error(e)
logging.error(traceback.format_exc())結(jié)果為:

網(wǎng)上代碼2
- logging模塊可以實(shí)現(xiàn)Python程序的錯(cuò)誤日志功能。
- 通過使用baseConfig()函數(shù)就可以對logging進(jìn)行一個(gè)日志配置。
- 包括輸出的格式和錯(cuò)誤等級,記錄的文件目錄
使用 Python 的 logging 模塊能很好的幫我們完成程序的錯(cuò)誤日志功能。
1. 像其它的語言那樣,python里的logging信息同樣也是分為5個(gè)等級,從低到高依次是:DEBUG,INFO,WARNING,ERROR,CRITICAL
2. python中,logging由logger,handler,filter,formater四個(gè)部分組成,logger是提供我們記錄日志的方法;handler是讓我們選擇日志的輸出地方,如:控制臺,文件,郵件發(fā)送等,一個(gè)logger添加多個(gè)handler;filter是給用戶提供更加細(xì)粒度的控制日志的輸出內(nèi)容;formater用戶格式化輸出日志的信息。
3. logger的級別劃分,python中, root是默認(rèn)的最高級別的,其它的logger的級別通過"."來劃分等級,如:bao,bao.a,bao.b三個(gè)logger,bao.a和bao.b都的級別都低于bao,依此類推。
4. python中配置logging有三種方式:
- 4.1 在程序中完成logger,handler,filter,formater的實(shí)例化 被配置好logging,然后再使用logging取得logger進(jìn)行日志操作。
- 4.2 使用配置文件的方式配置logging,使用fileConfig(filename,defaults=None,disable_existing_loggers=Ture )函數(shù)來讀取配置文件。
- 4.3 使用一個(gè)字典方式來寫配置信息,然后使用dictConfig(dict,defaults=None,disable_existing_loggers=Ture)函數(shù)來瓦按成logging 的配置 。(這個(gè)方式?jīng)]有仔細(xì)看,所以沒有怎么說,具體可以看文檔)
注意: 在使用第二種和三種方式配置logging的時(shí)候,第三個(gè)參數(shù)默認(rèn)值是True,當(dāng)它為True的時(shí)候,在這之前定義的logging配置就是失效,不能再使用,也就是只有配置文件或者配置字典里有的內(nèi)容才能使用。如果先讓之前的logging配置依然有限就要把這個(gè)參數(shù)設(shè)為False,或者一直就是使用配置文件或者配置字典的方式來對logging進(jìn)行配置。
使用代碼logging的代碼來說明:
使用baseConfig()函數(shù)對 logging進(jìn)行 簡單的 配置:
import logging
logging.basicConfig(level=logging.INFO,
format='%(levelname)s %(asctime)s [%(filename)s:%(lineno)d] %(message)s',
datefmt='%Y.%m.%d. %H:%M:%S',
# filename='parser_result.log',
# filemode='w'
)
log = logging.getLogger(__name__)
if __name__ == '__main__':
# 使用logger輸出日志信息
log.info('this is a log')
log.debug("debug")
log.info("info")
log.warning("warning")
log.error("error")
log.critical("critiacl")
說明:
- 使用baseConfig()函數(shù),可選參數(shù)有filename,filemode,format,datefmt,level,stream
- 有filename是文件日志輸出,filemode是’w’的話,文件會被覆蓋之前生成的文件會被覆蓋。datafmt參數(shù)用于格式化日期的輸出
通過初始化logger,handler,formater來配置logging:
import logging
# logging模塊由logger,handler,filter,fomatter四個(gè)部分組成
# 獲取一個(gè)logger對象
logger = logging.getLogger("haha")
# 設(shè)置日志輸出等級
logger.setLevel(logging.DEBUG)
# 創(chuàng)建一個(gè)文件的handler
f_handler = logging.FileHandler("xxx.log")
f_handler.setLevel(logging.INFO)
# 創(chuàng)建一個(gè)控制臺的handler
c_handler = logging.StreamHandler()
c_handler.setLevel(logging.WARNING)
# 設(shè)置日志的輸出格式
fmt = logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(message)s")
# 給handler綁定一個(gè)fomatter類
f_handler.setFormatter(fmt)
c_handler.setFormatter(fmt)
# 綁定一個(gè)handler
logger.addHandler(f_handler)
logger.addHandler(c_handler)
# 使用logger輸出日志信息
logger.debug("debug")
logger.info("info")
logger.warning("warning")
logger.error("error")
logger.critical("critiacl")
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python mysql項(xiàng)目實(shí)戰(zhàn)及框架搭建過程
本文給大家分享python mysql項(xiàng)目實(shí)戰(zhàn)框架搭建過程,通過實(shí)例代碼給大家講解python mysql項(xiàng)目實(shí)戰(zhàn)的相關(guān)知識,需要的朋友參考下吧2021-06-06
Python實(shí)現(xiàn)計(jì)算長方形面積(帶參數(shù)函數(shù)demo)
今天小編就為大家分享一篇Python實(shí)現(xiàn)計(jì)算長方形面積(帶參數(shù)函數(shù)demo),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
如何基于python實(shí)現(xiàn)年會抽獎(jiǎng)工具
這篇文章主要介紹了如何基于python實(shí)現(xiàn)年會抽獎(jiǎng)工具,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
pycharm設(shè)置python文件模板信息過程圖解
這篇文章主要介紹了pycharm設(shè)置python文件模板信息過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Python文件右鍵找不到IDLE打開項(xiàng)解決辦法
這篇文章主要介紹了Python文件右鍵找不到IDLE打開項(xiàng)解決辦法,本文使用注冊表解決了這個(gè)問題,需要的朋友可以參考下2015-06-06
PyTorch?模型?onnx?文件導(dǎo)出及調(diào)用詳情
這篇文章主要介紹了PyTorch模型onnx文件導(dǎo)出及調(diào)用詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07
利用Python將彩色圖像轉(zhuǎn)為灰度圖像的兩種方法
這篇文章主要給大家介紹了關(guān)于利用Python將彩色圖像轉(zhuǎn)為灰度圖像的兩種方法,以及python 批量將圖片轉(zhuǎn)為灰度圖的方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
Python結(jié)合Sprak實(shí)現(xiàn)計(jì)算曲線與X軸上方的面積
這篇文章主要介紹了Python結(jié)合Sprak實(shí)現(xiàn)計(jì)算曲線與X軸上方的面積,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-02-02

