Python:logging 库高级用法举例和应用详解

Python:logging库高级用法举例和应用详解

模块介绍

logging 模块是 Python 标准库中的一种用于记录日志的模块。此模块允许创建日志文件,发送日志信息到设定的输出目标(如控制台、文件等)并能够设置日志的细节,包括日志等级、格式、过滤器等。

适配的 Python 版本:Python 3.x(包括 Python 3.9、3.10 等最新版本)。

应用场景

logging 模块主要用于以下几个应用场景:

  1. 调试和开发:在开发过程中记录代码运行状态、变量值和错误信息,帮助开发者调试代码。
  2. 系统监控:记录系统运行状态、性能指标等日志信息,用于系统维护和分析。
  3. 安全审计:记录系统访问和操作日志,用于审计和安全分析。
  4. 应用日志:在生产环境中记录应用相关的信息,如请求处理时间、数据库操作等,用于分析和优化。

安装说明

logging 模块是 Python 内置标准库,无需额外安装,可以直接导入使用:

1
import logging

用法举例

示例 1:基本日志记录

在基本的日志记录示例中,展示如何使用 logging 模块在控制台打印日志信息。

1
2
3
4
5
6
7
8
9
10
11
import logging

# 设置日志输出等级为DEBUG
logging.basicConfig(level=logging.DEBUG)

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

示例 2:日志输出到文件

在这个示例中,展示如何将日志信息记录到一个文件中。

1
2
3
4
5
6
7
8
9
import logging

# 创建一个日志文件,设置日志等级和格式
logging.basicConfig(filename='app.log', level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# 日志输出到文件
logging.info("这是一个信息日志") # 此信息将记录到app.log文件中
logging.error("这是一个错误日志") # 此错误信息将记录到app.log文件中

示例 3:自定义 Logger 和 Handler

在这个高级示例中,展示如何创建自定义的 Logger 和 Handler,实现更细粒度的日志管理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import logging

# 创建一个自定义的Logger
logger = logging.getLogger('myLogger')
logger.setLevel(logging.DEBUG)

# 创建一个控制台Handler
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)

# 创建一个文件Handler
file_handler = logging.FileHandler('myLogger.log')
file_handler.setLevel(logging.ERROR)

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

# 将Handler添加到Logger
logger.addHandler(console_handler)
logger.addHandler(file_handler)

# 记录日志
logger.debug("这是一个调试信息") # 打印到控制台
logger.error("这是一个错误信息") # 打印到控制台并记录到myLogger.log文件中

最后的话

感谢您花时间阅读这篇关于 logging 模块的详细介绍和使用示例的文章。如果您对 Python 编程感兴趣,强烈建议关注我的博客 “全糖冲击博客”。我会在博客中提供更多有关 Python 标准库的使用教程和实践指南,帮助您迅速掌握各类编程技巧,提升开发效率和代码质量。关注我的博客,还可以第一时间获取最新的编程资讯和文章更新,与更多志同道合的小伙伴交流学习心得。希望在 “全糖冲击博客” 中与您相遇,共同进步!

软件版本可能变动

如果本文档不再适用或有误,请留言或联系我进行更新。让我们一起营造良好的学习氛围。感谢您的支持! - Travis Tang