如何在 Python 中使用 logging 库记录日志

157 阅读3分钟

本周开发过程中,需要研究交易所推送的行情数据的原始数据结构,由于数据量大,print打印总是看不全数据,然后学习使用了logging库进行日志的记录。

在软件开发过程中,日志记录是一个非常重要的环节。它可以帮助我们追踪程序的运行状态,捕获和诊断错误,并提供运行时的调试信息。Python 标准库提供了功能强大的 logging 模块,可以帮助我们轻松地记录日志。在本文中,我们将介绍如何配置和使用 logging 库,并比较 loggingprint 的优缺点。

一、 loggingprint 的比较

print 的优缺点

优点:

  1. 简单易用print 是 Python 的内置函数,使用起来非常简单。
  2. 快速调试:在编写和调试小程序或脚本时,print 可以快速输出变量值和程序运行状态。

缺点:

  1. 不便于管理:当程序变得复杂时,大量的 print 语句会使代码难以维护。
  2. 缺乏日志级别print 不能区分不同级别的日志信息(如调试、信息、警告、错误和严重错误)。
  3. 无法持久化print 仅将输出显示在控制台,不提供将日志信息保存到文件或其他存储介质的功能。

logging 的优缺点

优点:

  1. 灵活性高logging 提供了丰富的配置选项,可以将日志输出到控制台、文件,甚至远程服务器。
  2. 日志级别管理logging 支持多种日志级别,可以根据需要记录不同严重级别的日志信息。
  3. 易于维护logging 可以通过配置文件或代码配置,集中管理日志记录,提升代码的可维护性。
  4. 持久化logging 可以将日志信息保存到文件或其他存储介质,便于长期追踪和分析。

缺点:

  1. 初始配置复杂:相比 printlogging 需要一些初始配置,初学者可能会觉得复杂。
  2. 性能开销:尽管性能开销不大,但在高频率日志记录的情况下,logging 的性能开销要高于 print

二、配置 logging

首先,我们需要配置 logging 库。配置包括设置日志文件的位置、日志的级别和日志的格式。以下是一个简单的配置示例:

import logging

# 配置日志记录
logging.basicConfig(
    filename='output.log',  # 日志文件名
    level=logging.INFO,  # 日志级别
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'  # 日志格式
)

在上述配置中:

  • filename 指定了日志文件的名称,这里是 output.log
  • level 设置了日志的级别,表示最低的严重级别日志将被记录。这里设置为 logging.INFO,即记录所有信息级别及以上的日志。
  • format 设置了日志的格式,包括时间、日志记录器名称、日志级别和消息内容。

二、使用 logging 库记录日志

在配置好 logging 库之后,我们可以使用它来记录日志。logging 库提供了多个方法来记录不同级别的日志:

  • logging.debug():记录调试信息,通常用于诊断问题。
  • logging.info():记录一般信息,确认程序按预期运行。
  • logging.warning():记录警告信息,表示某些潜在问题。
  • logging.error():记录错误信息,程序在执行某些功能时遇到了问题。
  • logging.critical():记录严重错误信息,表示程序可能无法继续运行。

以下是一个示例,展示如何使用 logging 库记录不同级别的日志:

import logging

logging.basicConfig(
    filename='output.log',
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)

logging.debug("这是调试信息")
logging.info("这是一般信息")
logging.warning("这是警告信息")
logging.error("这是错误信息")
logging.critical("这是严重错误信息")