logging模組用法
阿新 • • 發佈:2018-12-16
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')
使用基礎配置的方式配置相對簡單,能完成一些簡單的需求.
但是缺點有:
- 只能完成一些簡單的需求,
- 不支援同時向檔案中寫入和向螢幕輸出
- 根據作業系統的編碼可能會出現亂碼問題
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物件和操作符綁在一起.
但是這種方式很靈活,能支援很多需求.