Python 实现日志同时输出到屏幕和文件

实现Python日志同时输出到屏幕和文件,可以使用Python标准库logging。logging是一个强大的日志模块,可以实现灵活的日志记录和输出方式。

以下是实现步骤:

步骤一:导入logging模块

import logging

步骤二:创建日志相关的变量

logger = logging.getLogger('mylogger')   # 创建logger对象
logger.setLevel(logging.DEBUG)           # 设置日志记录级别

# 设置文件handler
file_handler = logging.FileHandler('log.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))

# 设置屏幕handler
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))

# 将handler添加到logger对象中
logger.addHandler(file_handler)
logger.addHandler(console_handler)

步骤三:使用日志记录信息

logger.debug('debug info')
logger.info('info info')
logger.warning('warning info')
logger.error('error info')
logger.critical('critical info')

以上代码,创建了一个名为mylogger的logger对象,设置了日志记录级别为DEBUG,创建了一个文件handler和一个屏幕handler,设置了它们的级别和格式,最后将handler添加到logger对象中。通过在Python程序中使用logger.debug/info/warning/error/critical等方法记录不同级别的信息即可实现多个地方同时输出日志信息。

以下是完整代码:

import logging

# 创建logger对象
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)

# 设置文件handler
file_handler = logging.FileHandler('log.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))

# 设置屏幕handler
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))

# 将handler添加到logger对象中
logger.addHandler(file_handler)
logger.addHandler(console_handler)

# 使用日志记录信息
logger.debug('debug info')
logger.info('info info')
logger.warning('warning info')
logger.error('error info')
logger.critical('critical info')

示例一:输出到文件和屏幕

以上代码中,文件日志输出到log.log中,同时会在控制台输出。但是有时候,我们需要只在文件中记录日志,不在控制台输出。

import logging

# 创建logger对象
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)

# 设置文件handler
file_handler = logging.FileHandler('log.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))

# 将handler添加到logger对象中
logger.addHandler(file_handler)

# 使用日志记录信息
logger.debug('debug info')
logger.info('info info')
logger.warning('warning info')
logger.error('error info')
logger.critical('critical info')

示例二:输出到不同的文件

有时候,我们需要将不同级别的日志信息输出到不同的文件中。

import logging

# 创建logger对象
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)

# 设置文件handler
file_handler_debug = logging.FileHandler('debug.log')
file_handler_debug.setLevel(logging.DEBUG)
file_handler_debug.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))

file_handler_info = logging.FileHandler('info.log')
file_handler_info.setLevel(logging.INFO)
file_handler_info.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))

# 将handler添加到logger对象中
logger.addHandler(file_handler_debug)
logger.addHandler(file_handler_info)

# 使用日志记录信息
logger.debug('debug info')
logger.info('info info')

以上代码中,我们通过不同的文件handler设置了不同级别的输出文件,最后将handler添加到logger对象中,可以将不同级别的日志信息输出到不同的文件中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 实现日志同时输出到屏幕和文件 - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • python爬虫之urllib3的使用示例

    python爬虫之urllib3的使用示例 什么是urllib3? urllib3是一个功能强大,条理清晰且具有线程安全的HTTP请求库,可以让我们更加高效的发送HTTP/1.1请求。使用urllib3库可以轻易地做到连接池的管理、重试、重定向、GZIP、SSL、代理设置等功能。 安装urllib3 强烈建议在使用前,对Python的环境进行一些优化和升级(…

    python 2023年6月3日
    00
  • Python 从subprocess运行的子进程中实时获取输出的例子

    问题澄清:该攻略需要讲解如何在Python中使用subprocess运行子进程,并实时获取子进程输出。其中,攻略需要包含至少两个示例说明。 回答:使用Python中的subprocess模块可以轻松地在程序中启动并控制一个子进程的执行。在子进程的执行过程中,我们可以通过一些方法来获取其输出,包括stdout和stderr输出流的获取、控制台指令的输入等。 下…

    python 2023年6月3日
    00
  • 通俗易懂详解Python基础五种下划线作用

    以下是 “通俗易懂详解Python基础五种下划线作用”的完整攻略。 一、Python中的下划线 Python中的下划线有多种用途,包括变量名、函数名、类名等等。在Python中,下划线主要有五种不同的用法,分别是单前导下划线、单末尾下划线、双前导下划线、双前导双下划线和双前导后末尾双下划线。 二、单前导下划线 单前导下划线用来指示一个变量或者方法是“非公有的…

    python 2023年6月5日
    00
  • Python中线程threading.Thread的使用详解

    Python中线程(threading.Thread)是实现并发操作的重要手段之一,通过线程可以实现多个任务同时进行,提高程序的效率。下面,我将为大家详细讲解如何使用Python中的线程(threading.Thread)。 基本用法 Python中的线程通过threading.Thread()方法来创建,该方法接收两个参数target和args,其中tar…

    python 2023年5月19日
    00
  • python3+PyQt5+Qt Designer实现界面可视化

    下面是Python3+PyQt5+Qt Designer实现界面可视化的完整攻略: 1. 安装PyQt5和Qt Designer 在开始之前,需要先安装PyQt5和Qt Designer。如果你使用的是pip,可以直接在终端中运行下面的命令进行安装: pip3 install PyQt5 pyqt5-tools 如果你使用的是Anaconda,可以在Anac…

    python 2023年6月13日
    00
  • Pandas DataFrame转换为字典的方法

    将Pandas DataFrame对象转换为字典通常用于将数据传递给其他接收字典类型的函数或程序。下面是将Pandas DataFrame对象转换为字典的方法: 1. 使用to_dict()方法 Pandas DataFrame的to_dict()方法通过将DataFrame的数据转换为一个字典来实现。该方法接受一个orient参数,指定字典的输出方向。默认…

    python 2023年5月13日
    00
  • Python实现的当前时间多加一天、一小时、一分钟操作示例

    Python实现时间加减操作 在Python中实现时间加减操作非常简单,我们只需要调用Python标准库中的datetime模块,即可完成各种时间的加减运算。 实现原理 在Python中,日期时间可以使用datetime类来表示。我们可以初始化一个datetime对象,然后使用timedelta对象来对其进行加减操作。 例如: import datetime…

    python 2023年6月2日
    00
  • Python万字深入内存管理讲解

    Python万字深入内存管理讲解攻略 什么是内存管理 内存管理指的是对于计算机内存的管理、维护和利用。在Python中,其内存管理由解释器通过垃圾回收机制来进行。 Python内存管理机制 Python通过称之为引用计数的机制来管理内存。当对象被创建时,Python会为其分配内存并将一个指向该内存块的引用计数器设置为1。当引用计数器变为0时,Python就会…

    python 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部