前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python输出日志信息

Python输出日志信息

作者头像
编程随笔
发布2022-04-29 12:24:32
2.3K0
发布2022-04-29 12:24:32
举报
文章被收录于专栏:后端开发随笔后端开发随笔

在Python中要输出日志信息有2种方式: 1.调用内置的print()方法,该方式只能将信息输出到控制台 2.使用logging模块将日志信息输出到文件中(logging模块默认也是输出到控制台:标准错误输出流)

logging模块默认使用stderror
logging模块默认使用stderror

输出到控制台

使用print()方法:

代码语言:javascript
复制
print('日志信息')

使用logging模块的默认配置(日志级别为WARNING,输出到标准错误输出流):

代码语言:javascript
复制
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模块明确配置输出到控制台(标准输出流):

代码语言:javascript
复制
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):

代码语言:javascript
复制
# -*- 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对象即可:

代码语言:javascript
复制
from logger import logger

if __name__ == '__main__':
    logger.info('日志输出测试')

关于logging模块的介绍详见:logging --- Python 的日志记录工具

【参考】 https://www.cnblogs.com/nancyzhu/p/8551506.html Python + logging 输出到屏幕,将log日志写入文件

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 输出到控制台
  • 输出到文件
相关产品与服务
日志服务
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档