python之logging日志模塊

記錄器是程序不可或缺的部分,沒有了記錄器是很難在程序中發(fā)現(xiàn)問題所在的,只能一個模塊一個模塊的去排查
有了記錄器就會很快定位到位置所在,這樣就可以方便的找到錯誤,為排查問題降低成本
一個記錄器標準模塊,根據(jù)級別返回有效信息

Level等級 數(shù)值  
CRITICAL   50
ERROR      40
WARNING    30
INFO       20
DEBUG      10
NOTSET      0

NOTSET<DEBUG<INFO<WARNING<ERROR<CRITICAL 可以這么理解,包含的關系,一層一層的概括進去

log的配置可以分開來配置

import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO) #設置輸出等級
ph = logging.StreamHandler()  #創(chuàng)建輸出控制臺的容器
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s") #配置輸出的內(nèi)容
ph.setFormatter(formatter)   #將配置內(nèi)容添加到創(chuàng)建的容器里
logger.addHandler(ph)   #將我們的容器添加到handler
logger.info("控制臺輸出內(nèi)容")
image.png

Formatter是設置輸出的展示內(nèi)容,可以傳多參數(shù)

image.png

既然在控制臺輸出了,還要輸出到文件中,保存起來
在創(chuàng)建個FileHandler,添加到Handler容器中就可以實現(xiàn)了

logger = logging.getLogger() # 初始化logger
logger.setLevel(logging.INFO) #設置log級別
fileTimeName = time.strftime("%Y-%m-%d",time.localtime()) # 輸出日期,設置log文件名字
genpath = os.path.abspath("..") #獲取到根目錄
logpath = os.path.join(genpath,"log") #拼接log文件路徑
logFileName = logpath+"/"+fileTimeName+".log"
fh = logging.FileHandler(logFileName,mode="w",encoding="utf-8") #既然是寫入文件,就需要傳個文件路徑和名字,mode是寫入方式,encoding編碼格式
if os.path.exists(logpath): #判斷路徑是否存在,不存在則創(chuàng)建
    pass
else:
    os.makedirs(logpath)
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] %(name)s - %(levelname)s: %(message)s")
fh.setFormatter(formatter)
logger.addHandler(fh)

總結

1、log常用兩種方式
???? 控制臺輸出
???? 寫入本地文件中
2、控制臺輸出,使用StreamHandler()
???? 寫入文件,使用FileHandler(path,mode="w",encoding="utf-8")
???? 其他部分都是通用的,初始化,設置輸出等級,設置輸出樣式,添加到handler里

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • From:Python之日志處理(logging模塊) - 云游道士 - 博客園 https://www.cnbl...
    vigny的先生閱讀 2,796評論 3 5
  • 在現(xiàn)實生活中,記錄日志非常重要。銀行轉(zhuǎn)賬時會有轉(zhuǎn)賬記錄;飛機飛行過程中,會有黑盒子(飛行數(shù)據(jù)記錄器)記錄飛行過程中...
    chliar閱讀 880評論 1 0
  • logging模塊介紹: logging是python內(nèi)置的標準庫模塊,模塊提供不同的日志級別,并可以采用不同的方...
    4ffde5305e8f閱讀 3,000評論 0 2
  • 關于Mongodb的全面總結 MongoDB的內(nèi)部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,289評論 2 89
  • 卡爾·榮格,作為弗洛伊德最出色的弟子,曾發(fā)展出一套關于“原型”的理論。這里所說的“原型”,指的是一種所有人可以理解...
    可惜無聲閱讀 1,304評論 16 46

友情鏈接更多精彩內(nèi)容