1. 程式人生 > >Python——logging模組學習

Python——logging模組學習

一、logging.basicConfig設定日誌輸出格式及路徑:輸出到檔案

  • 日誌級別大小關係為:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET

  • 預設情況下,logging將日誌列印到螢幕,日誌級別為WARNING

  • 通過logging.basicConfig函式對日誌的輸出格式及方式做相關設定

  • logging.basicConfig([**kwargs]) 函式用來配置root logger, 為root logger建立一個StreamHandler,設定預設的格式

import logging

# 日誌級別列表,預設為logging.WARNING
LEVELS = (logging.NOTSET, logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL) LOG_FORMAT = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)-8s %(message)s' # 輸出格式 DATE_FORMAT='%Y-%m-%d %H:%M:%S' # 日期格式 FILENAME = "mylog.log" # 日誌檔案 logging.basicConfig(level=LEVELS[1
], format=LOG_FORMAT, datefmt=DATE_FORMAT, filename=FILENAME, filemode='w') logging.debug('This is a {0} message'.format("debug")) logging.info('This is an {0} message'.format("info")) logging.warning('This is a warning message') logging.error('This is an error message') logging.critical('This is a critical error message'
)
  • format 引數說明

    %(levelname)s: 日誌級別名稱
    %(filename)s: 當前執行程式名
    %(lineno)d: 當前行號
    %(asctime)s: 日誌時間
    %(message)s:日誌資訊

二、將日誌輸出到控制檯, 同時寫入日誌檔案

import logging

# 建立一個logger
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

# 建立FileHandler,用於寫入日誌檔案
fh = logging.FileHandler('test.log')
fh.setLevel(logging.DEBUG)

# 建立StreamHandler,用於輸出到控制檯
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# 定義handler的輸出格式
LOG_FORMAT = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)-8s %(message)s'
formatter = logging.Formatter(LOG_FORMAT)
fh.setFormatter(formatter)
ch.setFormatter(formatter)

# 給logger新增handler
logger.addHandler(fh)
logger.addHandler(ch)

# 記錄一條日誌
logger.info('test')
  • logging.getLogger([name])

    返回一個logger例項,如果沒有指定name,返回root logger。

  • logger.setLevel(lvl)

    設定logger的level

  • logging.Formatter()物件

    設定日誌顯示格式,預設的時間格式為%Y-%m-%d %H:%M:%S。

  • logger.addHandler(hdlr)

    通過handler物件可以把日誌內容寫到不同的地方

參考