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

yizhihongxing

实现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日

相关文章

  • 17条提高工作效率的Python技巧分享

    这里是 “17条提高工作效率的Python技巧分享”的完整攻略。 1. 使用Jupyter Notebook Jupyter Notebook是一个强大的交互式笔记本,非常适合Python编程。通过在笔记本上编写和测试代码,可以更快地开发和调试Python程序,使工作效率更高。 2. 使用虚拟环境 使用虚拟环境可以避免不同Python包的版本冲突,提高代码的…

    python 2023年5月13日
    00
  • python中seaborn包常用图形使用详解

    Python中Seaborn包常用图形使用详解 Seaborn介绍 Seaborn是基于matplotlib的Python可视化库,提供了美观的图形显示方式及高度定制化的绘图接口,适合构建具有统计意义的图表。Seaborn包含多种图表类型(如折线图、散点图、箱型图、热图等),而这些图表类型可以方便地针对数据进行分析。 Seaborn常用图表类型及使用方法 以…

    python 2023年5月18日
    00
  • python库Tsmoothie模块数据平滑化异常点抓取

    下面是关于Python库Tsmoothie模块数据平滑化异常点抓取的完整攻略。 什么是Tsmoothie Tsmoothie是一个Python库,它提供了多种数据平滑化方法,以及异常点抓取的功能。它可以处理时间序列数据,使用的方法和参数可以通过调整来适应不同的数据集和算法需求。 安装Tsmoothie 你可以在终端中输入以下代码来安装Tsmoothie: p…

    python 2023年5月13日
    00
  • 关于python中第三方库交叉编译的问题

    关于Python中第三方库交叉编译的问题,我们需要考虑到两方面问题:第一是如何在本地编译出适用于指定平台的.so/.dll二进制文件,第二是如何在指定平台上使用这些编译好的二进制文件。以下是两种常见的解决方案及其示例说明。 解决方案一:使用交叉编译工具链 交叉编译指的是在运行平台不同于本地编译平台的情况下,将程序编译为目标平台可执行代码的过程。在Python…

    python 2023年5月13日
    00
  • Python函数生成器原理及使用详解

    Python函数生成器原理及使用详解 Python中的生成器是一种特殊的函数,它可以在需要时生成一系列值,而不是一次性生成所有值。生成器可以帮助我们节省内存,并提高程序的效率。本文将详细介绍Python函数生成器的原理及使用方法,并提供两个示例。 生成器的原理 生成器是一种特殊的函数,它使用yield语句返回一个值,并暂停函数的执行。当生成器被调用时,它会返…

    python 2023年5月15日
    00
  • python随机生成库faker库api实例详解

    Python随机生成库faker库API实例详解 本文将详细讲解如何使用Python的faker库生成随机数据。 安装 运行以下命令安装faker库: pip install faker 使用faker库生成随机数据 导入faker库: from faker import Faker 在需要生成数据的地方,创建Faker对象: fake = Faker() …

    python 2023年6月2日
    00
  • python实例方法的使用注意及代码实例

    下面是关于Python实例方法的使用注意及代码实例的攻略。 什么是Python实例方法? Python实例方法是类中定义的一种方法类型。它与类方法和静态方法不同,实例方法是绑定到类的实例上的方法。因此,在调用实例方法时,需要使用类的实例对象。 实例方法的主要特点是可以访问类的实例对象的属性和方法,同时还可以通过self参数引用实例对象本身。 下面是一个例子,…

    python 2023年5月31日
    00
  • Python操作dict时避免出现KeyError的几种解决方法

    Python中的字典(dict)是一种常见的数据类型,用于存储键值对。但是在操作字典时,很容易遇到KeyError异常,这是由于访问了不存在的键所导致的。本文将为你介绍几种避免出现KeyError的方法,确保操作字典时更加健壮。 1. 使用in关键字 in操作符可以用于检查字典中是否存在某个键,我们可以在操作字典之前先用if语句判断这个键是否存在。以下是一段…

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