1. 程式人生 > >logging模組用法

logging模組用法

logging模組是python內建的一個日誌模組,用於更加方便和靈活的記錄日誌檔案.

有兩種方式使用logging模組來記錄日誌:

1.基礎配置

import logging
logging.basicConfig(level = logging.INFO,     #只打印大於此等級的日誌
                    format = '%(asctime)s %(levelname)s %(filename)s %(message)s %(name)s',
                    datefmt = '%Y-%m-%d %H:%M:%S',    #分別是時間,日誌等級,檔名,資訊,logger名  datefmt為時間格式
                    filename = 'file.log',    #無此引數就列印到螢幕
                    filemode = 'a')        
logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')

使用基礎配置的方式配置相對簡單,能完成一些簡單的需求.

但是缺點有:

  1. 只能完成一些簡單的需求,
  2. 不支援同時向檔案中寫入和向螢幕輸出
  3. 根據作業系統的編碼可能會出現亂碼問題

2.建立logger物件

import logging
logger = logging.getLogger()    #得到一個logger物件
logger.setLevel(logging.DEBUG)    #為logger設定等級
file_handler = logging.FileHandler('file',encoding='utf-8')  #檔案操作符
file_handler.setLevel(logging.INFO)    #為檔案操作符設定等級,只寫入此等級以上的日誌
stream_handler = logging.StreamHandler()    #螢幕操作符
formatter = logging.Formatter('%(asctime)s %(levelname)s %(filename)s %(message)s %(name)s',    
                                datefmt=('%Y-%m-%d %H:%M:%S'))    #意義同基礎配置的format
file_handler.setFormatter(formatter)    #為檔案操作符新增格式formatter
stream_handler.setFormatter(formatter)    #為螢幕操作符新增格式formatter
logger.addHandler(file_handler)    #為logger物件新增檔案操作符file_handler
logger.addHandler(stream_handler)    #為logger物件新增螢幕操作符stream_handler

logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logger.critical('critical')

logger物件的配置相對複雜,需要將操作符和格式綁在一起,再把logger物件和操作符綁在一起.

但是這種方式很靈活,能支援很多需求.