一文搞懂 Python logging 模块的应用

本文介绍了Python的logging模块,如何用它替代print()语句进行调试,以及如何记录和输出到控制台和文件,包括设置日志级别和添加更多元信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

logging 模块是 Python 标准库的一部分,用于跟踪软件运行时发生的事件。您可以在代码中添加日志调用以指示发生了哪些事件。

logging 模块允许进行诊断日志记录,记录与应用程序操作相关的事件,以及记录用户交易事件以进行分析的审计日志。它特别用于将事件记录到文件中。

先决条件

您应该已经安装了 Python 3,并在计算机或服务器上设置了编程环境。如果您尚未设置编程环境,可以参考本地编程环境或适合您操作系统(Ubuntu、CentOS、Debian 等)的服务器编程环境的安装和设置指南。

为什么使用 logging 模块

logging 模块记录程序内发生的事件,使得可以查看与软件运行时发生的任何事件相关的输出。

您可能更习惯于使用 print() 语句来检查事件是否发生。print() 语句确实提供了一种基本的调试代码以解决问题的方法。虽然在代码中嵌入 print() 语句可以跟踪执行流程和程序的当前状态,但与使用 logging 模块相比,这种解决方案在可维护性上存在一些问题:

  • 很难区分调试输出和正常程序输出,因为两者混在一起
  • 在代码中分散使用 print() 语句时,没有有效的方法来禁用提供调试输出的语句
  • 在调试完成后,删除所有 print() 语句变得困难
  • 没有包含可用的诊断信息的日志记录

习惯在代码中使用 logging 模块是个好主意,因为这更适合于超出小型 Python 脚本范围的应用程序,并提供了一种可持续的调试方法。

由于日志可以显示应用程序开发过程中的行为和错误,它们还可以为您提供应用程序开发过程中正在发生的情况的更全面的图像。

将调试消息打印到控制台

如果您习惯使用 print() 语句来查看程序中发生的情况,您可能习惯于看到定义类并实例化对象的程序生成类似以下内容:

class Pizza():
    def __init__(self, name, price):
        self.name = name
        self.price = price
        print("Pizza created: {} (${})".format(self.name, self.price))

    def make(self, quantity=1):
        print("Made {} {} pizza(s)".format(quantity, self.name))

    def eat(self, quantity=1):
        print("Ate {} pizza(s)".format(quantity, self.name))

pizza_01 = Pizza("artichoke", 15)
pizza_01.make()
pizza_01.eat()

pizza_02 = Pizza("margherita", 12)
pizza_02.make(2)
pizza_02.eat()

以上代码中有一个 __init__ 方法来定义 Pizza 类的 nameprice。然后有两个方法,一个叫做 make() 用于制作比萨饼,另一个叫做 eat() 用于吃比萨饼。这两个方法接受名为 quantity 的参数,该参数初始化为 1

现在让我们运行程序:

python pizza.py

我们将收到以下输出:

Pizza created: artichoke ($15)
Made 1 artichoke pizza(s)
Ate 1 pizza(s)
Pizza created: margherita ($12)
Made 2 margherita pizza(s)
Ate 1 pizza(s)

虽然 print() 语句允许我们看到代码正在工作,但我们可以使用 logging 模块来代替。

让我们删除或注释掉整个代码中的 print() 语句,并在文件顶部添加 import logging

import logging


class Pizza():
    def __init__(self, name, value):
        self
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张无忌打怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值