Python——logging模組學習
阿新 • • 發佈:2019-02-04
一、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物件可以把日誌內容寫到不同的地方