python學習筆記8 日誌和異常捕獲

2021-10-06 08:04:49 字數 2829 閱讀 8904

先記錄一下,後面學習的時候再補充。

參考這篇文章:

***:

一般在**中都會有異常捕獲和日誌記錄,兩者互相配合。當然日誌除了記錄異常也可以記錄執**況,用途更多。

日誌需要引用logging模組,日誌資訊有級別之分,如果設定了日誌級別,則在該級別下的資訊不會被記錄,如下:

級別排序:critical > error > warning > info > debug

debug : 列印全部的日誌,詳細的資訊,通常只出現在診斷問題上

info : 列印info,warning,error,critical級別的日誌,確認一切按預期執行

warning : 列印warning,error,critical級別的日誌,乙個跡象表明,一些意想不到的事情發生了,或表明一些問題在不久的將來(例如。磁碟空間低」),這個軟體還能按預期工作

error : 列印error,critical級別的日誌,更嚴重的問題,軟體沒能執行一些功能

critical : 列印critical級別,乙個嚴重的錯誤,這表明程式本身可能無法繼續執行

使用方式如下:

1.簡單使用,直接在try except中使用,可以發現異常時記錄。

import logging

#直接當print()使用,區別是logging一般是紅色字型,且出現位置不定

logging.debug(

"測試列印"

)#日誌的基本設定,一般簡單使用都不需要設

logging.basicconfig(level=logging.debug,

#設定日誌級別

format

='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s'

,#設定日誌格式,依次是時間,檔名,問題行號,日誌級別,具體資訊

datefmt=

'%a, %d %b %y %h:%m:%s'

,#設定日期格式

filename=

'test.log'

,#設定日誌檔名

filemode=

'w')

#設定日誌許可權

#異常捕獲

#try except else finally

#如果要更詳細還可以引用 import traceback ,然後在except裡加 print(traceback.format_exc())

#可以自由組合使用

try:

#第一步嘗試

print(0

/0)except exception as e:

#第二步如果有異常嘗試

print

('有錯誤 '

,e)#print(traceback.format_exc())顯示在**行的錯誤

logging.debug(e)

#日誌一般用在這裡

except ioerror as f:

#第二步分的細一些,還可以再自定錯誤型別再記錄

print

('io有錯誤 '

,f)else

:#第二步沒有異常嘗試

print(1

)finally

:#第三步嘗試

print(2

)

2.複雜一點使用,就是定義乙個log檔案,然後建立乙個handle往裡寫日誌。

import os.path

import time

import logging

# 建立乙個logger

logger = logging.getlogger(

)logger.setlevel(logging.info)

# log等級總開關

# 建立乙個handler,用於寫入日誌檔案

rq = time.strftime(

'%y%m%d%h%m'

, time.localtime(time.time())

)log_path = os.path.dirname(os.getcwd())

+'/logs/'

#獲取當前目錄的上級目錄加/logs/

log_name = log_path + rq +

'.log'

logfile = log_name

fh = logging.filehandler(logfile, mode=

'w')

#建立乙個日誌處理工具

fh.setlevel(logging.debug)

# 輸出到file的log等級的開關

# 定義handler的輸出格式

formatter = logging.formatter(

"%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"

)fh.setformatter(formatter)

logger.addhandler(fh)

# 使用logger.xx來記錄錯誤,這裡的"error"可以根據所需要的級別進行修改

try:

open

('/path/to/does/not/exist'

,'rb'

)except

(systemexit, keyboardinterrupt)

:raise

except exception, e:

logger.error(

'failed to open file'

, exc_info=

true

)

Springboot學習筆記(五)日誌

選擇乙個日誌門面 抽象層 選乙個日誌實現 日誌門面 slf4j 日誌實現 logback 開發中,日誌記錄方法的呼叫,不應該直接呼叫日誌的實現類,而是呼叫日誌抽象層裡的方法 logging.level.com.atguigu trace spring.profiles.active dev logg...

Android學習筆記5 日誌

log.v 這個方法用於列印那些最為瑣碎的,意義最小的日誌資訊。對應級別verbose,是android 日誌裡面級別最低的一種。log.d 這個方法用於列印一些除錯資訊,這些資訊對你除錯程式和分析問題應該是有幫助的。對應級別debug,比verbose 高一級。log.i 這個方法用於列印一些比較...

Xitrum學習筆記18 日誌

任何地方都可以直接使用xitrum.log xitrum.log.debug my debug msg xitrum.log.info my info msg 如果想獲得log在 建立的資訊,應該繼承xitrum.log特質 package my package import xitrum.log ...