先記錄一下,後面學習的時候再補充。
參考這篇文章:
***:
一般在**中都會有異常捕獲和日誌記錄,兩者互相配合。當然日誌除了記錄異常也可以記錄執**況,用途更多。
日誌需要引用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 ...