Python輸出日志信息


在Python中要輸出日志信息有2種方式:
1.調用內置的print()方法,該方式只能將信息輸出到控制台
2.使用logging模塊將日志信息輸出到文件中(logging模塊默認也是輸出到控制台:標准錯誤輸出流)
logging模塊默認使用stderror

輸出到控制台

使用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日志寫入文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM