您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)如何在Python中利用logging與traceback模塊記錄日志和跟蹤異常,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
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í)開關(guān) # 第二步,創(chuàng)建一個(gè)handler,用于寫入日志文件 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í)的開關(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)存耗盡、磁盤空間為空,一般很少使用
ERROR:發(fā)生錯(cuò)誤時(shí),如IO操作失敗或者連接問題
WARNING:發(fā)生很重要的事件,但是并不是錯(cuò)誤時(shí),如用戶登錄密碼錯(cuò)誤
INFO:處理請(qǐng)求或者狀態(tài)變化等日常事務(wù)
DEBUG:調(diào)試過程中使用DEBUG等級(jí),如算法中每個(gè)循環(huán)的中間狀態(tài)
traceback模塊
traceback是python中用來跟蹤異常信息的模塊,方便把程序中的運(yùn)行異常打印或者保存下來做異常分析。
常見用法
try: doSomething() except: traceback.print_exc() # logging.error(str(traceback.format_exc()))
traceback.format_exc() 與 traceback.print_exc() 區(qū)別:
traceback.format_exc() 返回異常信息的字符串,可以用來把信息記錄到log里;
traceback.print_exc() 直接把異常信息在終端打印出來;
traceback.print_exc()
也可以實(shí)現(xiàn)把異常信息寫入文件,使用方法:
traceback.print_exc(file=open('traceback_INFO.txt','w+'))
看完上述內(nèi)容,你們對(duì)如何在Python中利用logging與traceback模塊記錄日志和跟蹤異常有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。