python之logging日誌模組詳解

傑森斯坦森1150發表於2020-10-26

logging日誌介紹:
很多程式都有記錄日誌的需求,並且日誌中包含的資訊既有正常的程式訪問日誌,還可能有錯誤、警告等資訊輸出,python的logging模組提供了標準的日誌介面,你可以通過它儲存各種格式的日誌,主要用於輸出執行日誌,可以設定輸出日誌的等級、日誌儲存路徑、日誌檔案回滾等,print也可以輸入日誌,但是logging相對print來說更好控制輸出在哪個地方,怎麼輸出及控制訊息級別來過濾掉那些不需要的資訊。
日誌級別:

  • 1,NOSET 0 等於沒寫,廢話。
  • 2,debug, 10, 除錯,一些額外資訊,備註,往往和主體功能無關。 日報裡面的備註
  • 3,info, 20 主體功能的資訊。 日報,做了些啥?
  • 4,warning, 30, 警告, 下次可能要出錯了。 交警叔叔警告
  • 5,error, 40, 犯錯,違法。搶紅燈
  • 6, critical, 50, 極其嚴重。搶銀行
    設定級別:
    當設成 debug 的時候,只有 高於,等於該級別的才會列印。
    當你設成 warning, 只有 warning, error, critical才會列印
    logging日誌框架
  • 1, 日誌收集器 logger: 日記本
  • 2, 日誌收集器級別 level
  • 3, 日誌處理器準備 handler, 不同記號的筆
  • 4, 日誌處理器級別設定
  • 5, logger.addHandler(hadler),新增到處理器中
  • 6, 設定日誌格式 format, 日期:重要程度:分類(工作,生活):內容 fmt = logging.Format()
  • 7, 新增日誌處理器, handler.setFormat(fmt)
    程式碼示例如下:
import logging

# 初始化 logger 收集器,給收集器起名為python25 ,預設是root
logger = logging.getLogger('python25')

# 設定級別

logger.setLevel('DEBUG')

# 筆的預設級別是warning, 預設是使用控制檯輸出。
# 放到一個file 檔案當中
handler =  logging.FileHandler('log.txt')
# 控制檯
console_handler = logging.StreamHandler()

# 給控制檯設定級別
console_handler.setLevel('DEBUG')

# 日誌處理器設定級別
handler.setLevel('WARNING')


# 新增 handler
logger.addHandler(handler)
logger.addHandler(console_handler)

# 為handler 設定格式
fmt  =  logging.Formatter('%(filename)s-%(lineno)d - %(name)s-%(levelname)s-%(message)s')
handler.setFormatter(fmt)

logger.debug('111')
logger.info('hello')
logger.warning('world')
logger.error('ceshi123')
logger.critical('bengkuile23425252')

從程式碼中可以看出控制檯console_handler設定的級別為:debug
控制檯輸出結果
在這裡插入圖片描述
輸入到log.txt的handler的級別為warning
所以:log.txt為:
在這裡插入圖片描述

相關文章