Python3如何日志同时输出到控制台和文件

 更新时间:2023年11月10日 11:09:09   作者:开发者超屎  
这篇文章主要介绍了Python3如何日志同时输出到控制台和文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Python3日志同时输出到控制台和文件

python3中想要将程序的日志打印到文件中,便于后期查看原因。

但是在开发阶段又想让日志打印到控制台,这时候可以用一个类将其封装起来,用法就跟java差不多,配置也很简单。

需要用到python内置模块 logging 和其中的函数handlers。

直接上代码

import logging
from logging import handlers
 
 
# 日志输出
class Logger(object):
    # 日志级别关系映射
    level_relations = {
        "debug": logging.DEBUG,
        "info": logging.INFO,
        "warning": logging.WARNING,
        "error": logging.ERROR,
        "critical": logging.CRITICAL
    }
 
    def __init__(self, filename="../log/test.log", level="info", when="D", backupCount=3, fmt="%(asctime)s - %(pathname)s[line:%(lineno)d] - %"
                                                                                              "(levelname)s: %(message)s"):
        # 设置日志输出格式
        format_str = logging.Formatter(fmt)
        # 设置日志在控制台输出
        streamHandler = logging.StreamHandler()
        # 设置控制台中输出日志格式
        streamHandler.setFormatter(format_str)
        # 设置日志输出到文件(指定间隔时间自动生成文件的处理器  --按日生成)
        # filename:日志文件名,interval:时间间隔,when:间隔的时间单位, backupCount:备份文件个数,若超过这个数就会自动删除
        fileHandler = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=backupCount, encoding="utf-8")
        # 设置日志文件中的输出格式
        fileHandler.setFormatter(format_str)
        # 设置日志输出文件
        self.logger = logging.getLogger(filename)
        # 设置日志级别
        self.logger.setLevel(self.level_relations.get(level))
        # 将输出对象添加到logger中
        self.logger.addHandler(streamHandler)
        self.logger.addHandler(fileHandler)

用法就跟java一样,创建一个Logger对象,通过对象去操作。

log = Logger(level="debug").logger
    log.debug("debuf")
    log.info("info")
    log.warning("warning")
    log.error("error")

可以在控制台中看到如下打印信息:

2019-07-02 21:32:25,553 - E:/python/ryan_py/tsunagaru/logger.py[line:30] - DEBUG: debuf
2019-07-02 21:32:25,625 - E:/python/ryan_py/tsunagaru/logger.py[line:31] - INFO: info
2019-07-02 21:32:25,625 - E:/python/ryan_py/tsunagaru/logger.py[line:32] - WARNING: warning
2019-07-02 21:32:25,626 - E:/python/ryan_py/tsunagaru/logger.py[line:33] - ERROR: error
 
Process finished with exit code 0

同时,还可以看到在父级同级的目录下的/log中创建了一个名叫test.log的文件。

打开test.log文件,可以看到里面的内容跟控制台上的输出内容是一致的。

2019-07-02 21:32:25,553 - E:/python/ryan_py/tsunagaru/logger.py[line:30] - DEBUG: debuf
2019-07-02 21:32:25,625 - E:/python/ryan_py/tsunagaru/logger.py[line:31] - INFO: info
2019-07-02 21:32:25,625 - E:/python/ryan_py/tsunagaru/logger.py[line:32] - WARNING: warning
2019-07-02 21:32:25,626 - E:/python/ryan_py/tsunagaru/logger.py[line:33] - ERROR: error

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 如何使用Selenium实现简单的网络自动化操作指南

    如何使用Selenium实现简单的网络自动化操作指南

    Selenium是一个用于Web应用测试的工具,Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,这篇文章主要给大家介绍了关于如何使用Selenium实现简单的网络自动化操作的相关资料,需要的朋友可以参考下
    2024-03-03
  • Python如何将PDF拆分成多个文件(最新推荐)

    Python如何将PDF拆分成多个文件(最新推荐)

    在 Python 中,你可以使用 PyPDF2 库来拆分 PDF 文件,以下是一个简单的示例,演示如何将一个 PDF 文件拆分为多个单页 PDF 文件,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • python中ASCII码字符与int之间的转换方法

    python中ASCII码字符与int之间的转换方法

    今天小编就为大家分享一篇python中ASCII码字符与int之间的转换方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Pandas操作MySQL的方法详解

    Pandas操作MySQL的方法详解

    这篇文章主要介绍了如何使用Pandas来操作MySQL数据库。主要是包含查询MySQL中的数据,以及如何往数据库中写入数据,感兴趣的小伙伴可以了解一下
    2022-08-08
  • Python图像处理之图像的灰度线性变换

    Python图像处理之图像的灰度线性变换

    这篇文章主要介绍了Python图像处理之图像的灰度线性变换,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Python Serial串口基本操作(收发数据)

    Python Serial串口基本操作(收发数据)

    这篇文章主要介绍了Python Serial串口基本操作(收发数据),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • python使用pypdf2实现pdf文档解密

    python使用pypdf2实现pdf文档解密

    利用pypdf2完成pdf的解密,这里的事例是python3环境下的,当然python2下也可以运行,只需要修改名称即可,文中通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 使用Python通过win32 COM打开Excel并添加Sheet的方法

    使用Python通过win32 COM打开Excel并添加Sheet的方法

    今天小编就为大家分享一篇使用Python通过win32 COM打开Excel并添加Sheet的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python enumerate遍历数组示例应用

    Python enumerate遍历数组示例应用

    遍历数组的python代码
    2008-09-09
  • python3调用c语言代码的全过程记录

    python3调用c语言代码的全过程记录

    python调用c语言代码的方式十分简单,只需四步。下面这篇文章就来给大家详细介绍了关于python3如何调用c语言代码的相关资料,需要的朋友可以参考下
    2021-05-05

最新评论