使用Python打印日志

随着技术的进步,日志成为了应用程序开发中不可或缺的一部分,它可以记录代码的运行情况,帮助开发者找出应用程序中的错误和异常,并及时对其进行修复。

一、Python中的日志模块

Python的标准库中拥有一个日志模块logging,它提供了非常强大的日志处理功能,可以根据各自的需求来灵活配置日志记录的级别、输出格式、输出位置、日志轮换等等。通过logging模块,我们可以方便地将应用程序中的各种调试信息、错误信息、警告信息等进行统一地记录和管理。

import logging

logging.basicConfig(level=logging.DEBUG, 
                    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') 
logger = logging.getLogger(__name__)

if __name__ == '__main__':
    logger.debug('debug message')
    logger.info('info message')
    logger.warning('warning message')
    logger.error('error message')
    logger.critical('critical message')

上述代码中,我们引入了logging模块,通过basicConfig函数配置日志的级别和输出格式,然后定义了Logger对象,并在main函数中分别生成了debug、info、warning、error和critical级别的日志信息,最终将这些日志信息输出。

二、日志的级别

在logging模块中,我们可以使用basicConfig函数来设置日志的级别,一共有5种级别,从高到低分别是CRITICAL(50)、ERROR(40)、WARNING(30)、INFO(20)和DEBUG(10),默认的级别为WARNING。

  • CRITICAL:严重错误
  • ERROR:一般错误
  • WARNING:警告信息
  • INFO:一般信息
  • DEBUG:调试信息

三、日志的格式化

logging模块中提供了套路的日志格式化,可以通过format参数来自定义日志的格式。

以下是一些常用的日志格式化占位符:

  • %(name)s:日志器名称
  • %(levelno)s:日志级别的数字表示
  • %(levelname)s:日志级别的文本表示
  • %(pathname)s:当前执行程序的路径
  • %(filename)s:当前执行程序名称
  • %(module)s:模块名称
  • %(funcName)s:函数名称
  • %(lineno)d:当前代码执行行号
  • %(asctime)s:当前时间
  • %(message)s:日志信息
import logging

LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT)

logger = logging.getLogger(__name__)

if __name__ == '__main__':
    logger.debug('debug message')
    logger.info('info message')
    logger.warning('warning message')
    logger.error('error message')
    logger.critical('critical message')

上述代码中,我们定义了一个常量LOG_FORMAT,它表示了日志的格式,最终日志信息的格式化展示就基于这个常量来。

四、日志的输出位置

在使用logging模块记录日志时,我们还可以指定日志输出的位置,包括控制台、文件、远程服务器等等。下面介绍如何将日志信息输出到文件中。

import logging

LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
logging.basicConfig(filename='my.log', level=logging.DEBUG, format=LOG_FORMAT)

logger = logging.getLogger(__name__)

if __name__ == '__main__':
    logger.debug('debug message')
    logger.info('info message')
    logger.warning('warning message')
    logger.error('error message')
    logger.critical('critical message')

在定义Logger对象的时候,我们可以通过basicConfig函数的filename参数来指定日志的文件名,这样就可以将所有的日志信息都输出到这个文件中。

五、日志的轮换和归档

使用logging模块记录日志时,如果不进行文件轮换和归档,那么一个应用程序可以生成大量的日志文件,这样会占用大量的磁盘空间,也不利于日志的查阅和管理。为了解决这个问题,logging模块提供了多种方式对日志进行轮换和归档。

下面演示一个基于时间轮换的归档,即每半天产生一个新的日志文件,并存放到指定的目录下,旧的日志文件则被归档到一个新的文件中。

import logging
from logging.handlers import TimedRotatingFileHandler


LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT)

logger = logging.getLogger(__name__)

handler = TimedRotatingFileHandler(filename='my.log', when='midnight', interval=1, backupCount=7)
handler.setFormatter(logging.Formatter(LOG_FORMAT))
logger.addHandler(handler)

if __name__ == '__main__':
    logger.debug('debug message')
    logger.info('info message')
    logger.warning('warning message')
    logger.error('error message')
    logger.critical('critical message')

在上述代码中,我们使用了TimedRotatingFileHandler对象来代替basicConfig函数中的filename参数,通过when、interval和backupCount参数来控制日志的轮换和归档。

总结

在本文中,我们介绍了Python中logging模块的基本用法,包括日志的级别、格式化、输出位置和日志轮换等方面。对于任何一款应用程序而言,日志都是必不可少的一部分,它可以帮助开发者快速定位并解决应用程序中的错误和异常,提高代码的健壮性和稳定性。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/180045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-22 05:10
下一篇 2024-11-22 05:10

相关推荐

  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29

发表回复

登录后才能评论