Loading

python日志模块【logging】

在 Python 里,logging 模块是一个强大且灵活的日志记录工具,它能帮助你在程序运行时记录不同级别的信息,方便调试、监控和问题排查。下面为你详细介绍 logging 模块的基本使用方法。

1. 基本使用

以下是一个简单的示例,展示了如何使用 logging 模块记录日志:

import logging

# 配置日志记录
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

# 记录不同级别的日志
logging.debug('这是一条调试信息')
logging.info('这是一条普通信息')
logging.warning('这是一条警告信息')
logging.error('这是一条错误信息')
logging.critical('这是一条严重错误信息')

代码解释

  • import logging:导入 logging 模块。
  • logging.basicConfig():对日志记录进行配置。level=logging.DEBUG 表示将日志级别设置为 DEBUG,这意味着所有级别(DEBUGINFOWARNINGERRORCRITICAL)的日志都会被记录;format='%(asctime)s - %(levelname)s - %(message)s' 定义了日志的输出格式,包含时间、日志级别和日志信息。
  • logging.debug()logging.info() 等:用于记录不同级别的日志。

2. 日志级别

logging 模块定义了 5 个日志级别,从低到高分别为:

  • DEBUG:用于详细的调试信息,通常在开发和调试阶段使用。
  • INFO:用于记录程序运行过程中的普通信息,如程序启动、完成某个任务等。
  • WARNING:用于记录可能会导致问题的情况,但程序仍然可以继续运行。
  • ERROR:用于记录程序运行过程中出现的错误,但不影响程序的整体运行。
  • CRITICAL:用于记录严重的错误,可能会导致程序无法继续运行。

3. 日志输出到文件

除了将日志输出到控制台,还可以将日志输出到文件中。示例如下:

import logging

# 配置日志记录到文件
logging.basicConfig(filename='app.log', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

# 记录日志
logging.debug('这是一条调试信息,将被记录到文件中')

代码解释

  • filename='app.log':指定日志文件的名称为 app.log

4. 自定义日志记录器

除了使用默认的日志记录器,还可以创建自定义的日志记录器。示例如下:

import logging

# 创建自定义日志记录器
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)

# 创建文件处理器
file_handler = logging.FileHandler('custom.log')
file_handler.setLevel(logging.DEBUG)

# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)

# 定义日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)

# 将处理器添加到日志记录器
logger.addHandler(file_handler)
logger.addHandler(console_handler)

# 记录日志
logger.debug('这是自定义日志记录器的调试信息')
logger.info('这是自定义日志记录器的普通信息')

代码解释

  • logging.getLogger('my_logger'):创建一个名为 my_logger 的自定义日志记录器。
  • logging.FileHandler('custom.log'):创建一个文件处理器,将日志记录到 custom.log 文件中。
  • logging.StreamHandler():创建一个控制台处理器,将日志输出到控制台。
  • logger.addHandler():将处理器添加到日志记录器中。

5. 异常处理中的日志记录

在异常处理中使用日志记录可以帮助你更好地排查问题。示例如下:

import logging

# 配置日志记录
logging.basicConfig(level=logging.ERROR, format='%(asctime)s - %(levelname)s - %(message)s')

try:
    result = 1 / 0
except ZeroDivisionError as e:
    logging.error('发生除零错误', exc_info=True)

代码解释

  • exc_info=True:在日志中记录异常的详细信息,包括异常类型和堆栈跟踪。

通过以上介绍,你可以掌握 logging 模块的基本使用方法,根据实际需求灵活配置日志记录。

posted @ 2025-03-25 15:22  一只大学生  阅读(338)  评论(0)    收藏  举报