Python輸出日誌資訊
阿新 • • 發佈:2022-03-16
在Python中要輸出日誌資訊有2種方式:
1.呼叫內建的print()
方法,該方式只能將資訊輸出到控制檯
2.使用logging
模組將日誌資訊輸出到檔案中(logging模組預設也是輸出到控制檯:標準錯誤輸出流)
輸出到控制檯
使用print()
方法:
print('日誌資訊')
使用logging
模組的預設配置(日誌級別為WARNING,輸出到標準錯誤輸出流):
import logging # 當沒有明確配置輸出到檔案時,資訊將會被輸出到標準錯誤輸出流中 logging.debug('debug資訊') logging.info('info資訊') # logging模組的預設日誌級別為WARNING,所以只會輸出大於等於WARNING級別日誌日誌 # logging模組的日誌級別等級:DEBUG(10) < INFO(20) < WARNING(30) < ERROR(40) < FATAL或CRITICAL(50) logging.warning('warning資訊') logging.error('error資訊') logging.critical('critical資訊')
使用logging模組明確配置輸出到控制檯(標準輸出流):
log = logging.getLogger('Console') log.setLevel(logging.INFO) fmt = logging.Formatter('%(asctime)s %(thread)d %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') console_handler = logging.StreamHandler(sys.stdout) # 明確指定日誌輸出到標準輸出流中 console_handler.setFormatter(fmt) log.addHandler(console_handler) log.info(msg)
輸出到檔案
在專案中更為普遍的使用方式是將日誌資訊輸出到檔案中,當然同時也可以輸出到控制檯便於除錯時檢視。
首先封裝一個實現日誌輸出的模組(logger.py):
# -*- coding: utf-8 -*- import sys import logging from logging import handlers # 日誌級別關係對映 level_relations = { 'debug': logging.DEBUG, 'info': logging.INFO, 'warning': logging.WARNING, 'error': logging.ERROR, 'crit': logging.CRITICAL } def _get_logger(filename, level='info'): # 建立日誌物件 log = logging.getLogger(filename) # 設定日誌級別 log.setLevel(level_relations.get(level)) # 日誌輸出格式 fmt = logging.Formatter('%(asctime)s %(thread)d %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s') # 輸出到控制檯 console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(fmt) # 輸出到檔案 # 日誌檔案按天進行儲存,每天一個日誌檔案 file_handler = handlers.TimedRotatingFileHandler(filename=filename, when='D', backupCount=1, encoding='utf-8') # 按照大小自動分割日誌檔案,一旦達到指定的大小重新生成檔案 # file_handler = handlers.RotatingFileHandler(filename=filename, maxBytes=1*1024*1024*1024, backupCount=1, encoding='utf-8') file_handler.setFormatter(fmt) log.addHandler(console_handler) log.addHandler(file_handler) return log # 明確指定日誌輸出的檔案路徑和日誌級別 logger = _get_logger('../logs/test.log', 'info')
其次,在要進行日誌輸出的地方引入logger
模組中的logger物件即可:
from logger import logger
if __name__ == '__main__':
logger.info('日誌輸出測試')
關於logging
模組的介紹詳見:logging --- Python 的日誌記錄工具 。
【參考】
https://www.cnblogs.com/nancyzhu/p/8551506.html Python + logging 輸出到螢幕,將log日誌寫入檔案