Python+logging输出到屏幕将log日志写入文件

当我们编写Python程序时,经常需要记录程序的运行状态、异常情况等信息。为此,我们可以使用logging模块进行日志输出和记录。logging模块提供了灵活的日志级别、输出格式和输出位置的配置方式,能够满足我们不同应用场景中的需求。

本文将讲解如何使用Python logging模块,实现将日志信息同时输出到屏幕和写入日志文件的功能。

步骤一:导入logging模块

要使用logging模块,我们需要先导入它:

import logging

步骤二:配置logging

配置logging模块,需要使用logging模块提供的各种方法设置。下面是几个常用的方法:

  • logging.basicConfig

这是logging模块中的一个基础配置方法,用于配置日志的基本设置,如日志级别、输出格式、输出位置等。这个方法只需要在程序入口处调用一次,即可全局有效。

下面是一个基本示例:

python
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s',
filename='example.log',
filemode='w')

上述代码表示设置日志级别为DEBUG,输出格式为时间、日志级别、日志内容,将日志记录到文件example.log中,使用w模式清空文件并写入。

  • logging.getLogger

getLogger方法用于获取日志记录器,我们可以给具体模块或功能区域创建一个日志记录器。如果不传入参数,则返回root日志记录器。

下面是一个示例:

python
logger = logging.getLogger('mylogger')

步骤三:输出日志信息

调用logging模块的相关方法,即可输出日志信息。logging模块中常用的方法有以下几种:

  • logging.debug(msg, args, *kwargs):输出DEBUG级别的日志记录。
  • logging.info(msg, args, *kwargs):输出INFO级别的日志记录。
  • logging.warning(msg, args, *kwargs):输出WARNING级别的日志记录。
  • logging.error(msg, args, *kwargs):输出ERROR级别的日志记录。
  • logging.critical(msg, args, *kwargs):输出CRITICAL级别的日志记录。

下面是一个输出日志信息的示例:

logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')

上述代码中,我们分别使用不同级别的日志函数打印了不同级别的日志信息。

步骤四:将日志输出同时写入文件

要将日志信息同时输出到屏幕和写入日志文件,可以同时调用logging.StreamHandlerlogging.FileHandler方法。

# 创建FileHandler,并设置日志级别和日志文件路径
fh = logging.FileHandler('example.log')
fh.setLevel(logging.DEBUG)

# 定义输出到屏幕的handler
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# 设置输出格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
fh.setFormatter(formatter)

# 定义日志记录器,并将以上两者添加到记录器中
logger = logging.getLogger('mylogger')
logger.addHandler(ch)
logger.addHandler(fh)

上述代码中,我们分别创建了一个FileHandler和一个StreamHandler,并设置了级别和输出格式。然后定义了一个日志记录器,并将前面创建的两个handler都添加到记录器中。

接下来,我们再次使用之前的代码输出不同级别的日志。此时,日志信息将同时输出到屏幕和example.log文件中。

logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')

示例说明

示例一

下面是一个完整的示例代码:

import logging

# 基础配置logging
logging.basicConfig(level=logging.DEBUG, 
                    format='%(asctime)s %(levelname)s %(message)s',
                    filename='example.log', 
                    filemode='w')

# 创建FileHandler,并设置日志级别和日志文件路径
fh = logging.FileHandler('example.log')
fh.setLevel(logging.DEBUG)

# 定义输出到屏幕的handler
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# 设置输出格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
fh.setFormatter(formatter)

# 定义日志记录器,并将以上两者添加到记录器中
logger = logging.getLogger('mylogger')
logger.addHandler(ch)
logger.addHandler(fh)

# 输出不同级别的日志信息
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')

上述代码中,我们使用basicConfig方法配置了logging基础设置,也同时使用了FileHandlerStreamHandler方法将日志写入文件和输出到屏幕。

示例二

下面是另一个利用logging输出同时写入文件的示例:

import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

fh = logging.FileHandler('spam.log')
fh.setLevel(logging.DEBUG)

ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

fh.setFormatter(formatter)
ch.setFormatter(formatter)

logger.addHandler(fh)
logger.addHandler(ch)

logger.info('creating an instance of my_module.MyClass')
logger.debug('debugging')
logger.warning('warning message')

该示例中,我们同样使用了FileHandlerStreamHandler方法将日志写入文件和输出到屏幕,并使用了getLogger方法获取日志记录器。

总结

以上是Python logging输出到屏幕并将日志写入文件的完整攻略。我们首先需要导入logging模块,其次配置logging模块,设置日志级别、输出格式和输出位置等,最后输出日志信息。

为了将日志信息同时输出到屏幕和写入文件,我们需要同时调用logging.StreamHandlerlogging.FileHandler方法,并将它们添加到日志记录器中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python+logging输出到屏幕将log日志写入文件 - Python技术站

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

相关文章

  • 基于Python中的turtle绘画星星和星空

    下面是关于基于Python中的turtle绘画星星和星空的完整攻略: 简介 turtle是Python自带的绘图库,其易学易用的特点受到了众多初学者的欢迎。通过turtle,我们可以用Python来实现各种各样的绘图效果,本攻略将介绍如何使用turtle绘画星星和星空的效果。 绘画星星 绘制星星可以采用turtle库里的forward()和left()函数,…

    python 2023年5月18日
    00
  • 带你了解Python语言的神奇世界

    带你了解Python语言的神奇世界攻略 Python是一门面向对象、易于学习、容易阅读的高级编程语言。它的优雅语法和动态类型特性使它成为数据科学、机器学习和Web应用开发的主要语言。以下是一些攻略,可以帮助你了解Python的神奇世界。 1. 安装Python 首先要安装Python,它可以在官网(https://www.python.org/downloa…

    python 2023年5月13日
    00
  • Python图像处理实现两幅图像合成一幅图像的方法【测试可用】

    Python图像处理实现两幅图像合成一幅图像的方法 在Python中,我们可以使用Pillow库来进行图像处理。具体实现两幅图像合成一幅图像的方法如下: 步骤1:导入Pillow库 首先,我们需要导入Pillow库,可以使用如下代码: from PIL import Image 步骤2:打开两个图像文件 接下来,我们需要打开两个图像文件,可以使用Pillow…

    python 2023年5月18日
    00
  • Python更改pip镜像源的方法示例

    下面是基于Markdown格式的详细攻略: Python更改pip镜像源的方法示例 在Python使用pip命令的过程中,由于国内网络环境的原因,我们有时候需要更改pip的镜像源,来加速安装Python库和包的速度。下面就介绍一下Python更改pip镜像源的方法示例。 方法一:快速更改 在命令行窗口中使用如下命令更改镜像源: pip config set …

    python 2023年5月14日
    00
  • Python使用os模块实现更高效地读写文件

    Python是一种强大的编程语言,它不仅有很多内置模块,还有很多第三方模块,其中os模块是一个非常重要的模块,提供了很多基于操作系统的方法,包括文件操作。在本文中,我们将讲解如何使用os模块实现更高效地读写文件。 1. 首先导入模块 在使用os模块之前,我们需要首先导入它。可以使用以下代码来导入os模块: import os 2. 文件读写的方式 在Pyth…

    python 2023年6月2日
    00
  • Python简单实现阿拉伯数字和罗马数字的互相转换功能示例

    你好,下面是“Python简单实现阿拉伯数字和罗马数字的互相转换功能示例”的完整攻略。 1. 实现数字转罗马数字功能 在 Python 中,我们可以使用简单的数学运算实现阿拉伯数字和罗马数字的互相转换。我们需要编写一个函数,输入一个阿拉伯数字,输出对应的罗马数字字符串。具体的实现过程如下: def int_to_roman(num: int) -> s…

    python 2023年6月5日
    00
  • python将logging模块封装成单独模块并实现动态切换Level方式

    一、背景在Python中,logging模块是非常常用的标准库,用于实现应用的日志记录。logging模块提供了丰富的功能,可以配置logger、handler、formatter等参数,也支持多线程、多进程、日志旋转等高级需求。不过,logging模块也存在一些问题,例如默认日志级别是WARNING,不太方便打印出DEBUG和INFO级别的信息;另外,当需…

    python 2023年5月20日
    00
  • Python利用PyQt5制作一个获取网络实时NBA数据并播报的GUI程序

    Python利用PyQt5制作一个获取网络实时NBA数据并播报的GUI程序 本攻略将介绍如何使用Python和PyQt5制作一个获取网络实时NBA数据并播报的GUI程序。我们将使用NBA Stats API来获取实时数据,并使用PyQt5来创建GUI界面。 安装必要的库 在开始之前,我们需要安装一些必要的库。我们可以使用pip来安装它们: pip insta…

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