视频链接:

不如语冰

https://space.bilibili.com/70431433?spm_id_from=333.1007.0.0

文章代码链接:

GitHub - zyf-ngu/Qmatter: 跟着问题学-AI大模型入门系列笔记和代码 · GitHub

8 log 日志

是什么?有什么功能作用?

Python内置的logging模块来记录日志。它提供了灵活的事件日志系统,可以用于调试、信息记录、警告、错误等。简单来说,不再一个个手打print输出信息,而是直接把关键信息记录到日志里。而且会对信息进行分类,使用不同的方法如warn(),info()记录不同等级的信息。

基本概念:

- 日志级别:(级别递增)有什么区别?如何定义级别?

DEBUG:调试细节

INFO:正常运行信息

WARNING:潜在问题

ERROR:功能错误

CRITICAL:严重错误

核心组件

- 记录器(Logger):记录日志的主入口,用于直接执行日志记录的对象。 有哪些属性和方法?

- 处理器(Handler):决定日志输出位置,将日志记录发送到不同的地方(如控制台、文件等)。在哪里定义,如何发送? 

- 格式器(Formatter):定义日志记录的格式。

Filter:过滤日志(可选)

工作流程
Logger → 过滤 → Handler → Formatter → 输出

怎么用?

使用步骤:

1. 创建记录器(Logger)并设置日志级别。

2. 创建处理器(Handler)并设置处理器的日志级别。

3. 创建格式器(Formatter)并设置到处理器上。

4. 将处理器添加到记录器。 注意:记录器和处理器都可以设置日志级别,只有不低于(即严重程度不低于)该级别的日志才会被处理。

简单示例

import logging

# 1. 创建记录器Logger实例(命名为 'my_app')

logger = logging.getLogger('my_app')

logger.setLevel(logging.DEBUG)  # 设置最低处理级别(DEBUG及以上都会处理)

# 2. 创建控制台处理器

console_handler = logging.StreamHandler()

console_handler.setLevel(logging.WARNING)  # 控制台只输出WARNING及以上级别

# 3. 创建文件处理器

file_handler = logging.FileHandler('app.log', mode='w')  # 文件路径,写入模式

file_handler.setLevel(logging.DEBUG)  # 文件记录所有DEBUG及以上级别

# 4. 创建格式化器

formatter = logging.Formatter(

    '%(asctime)s - %(name)s - %(levelname)s - %(message)s',

    datefmt='%Y-%m-%d %H:%M:%S'

)

# 5. 将格式化器添加到处理器

console_handler.setFormatter(formatter)

file_handler.setFormatter(formatter)

# 6. 将处理器添加到记录器Logger

logger.addHandler(console_handler)

logger.addHandler(file_handler)

# ============ 测试日志输出 ============

logger.debug('这是一条调试信息')      # 仅写入文件

logger.info('程序正常启动')           # 仅写入文件

logger.warning('磁盘空间不足80%!')    # 同时输出到控制台和文件

logger.error('无法连接数据库!')       # 同时输出到控制台和文件

logger.critical('系统崩溃!!!')       # 同时输出到控制台和文件

输出结果

控制台输出(WARNING及以上):

2024-08-03 14:20:35 - my_app - WARNING - 磁盘空间不足80%!

2024-08-03 14:20:35 - my_app - ERROR - 无法连接数据库!

2024-08-03 14:20:35 - my_app - CRITICAL - 系统崩溃!!!

文件输出(app.log 内容):

2024-08-03 14:20:35 - my_app - DEBUG - 这是一条调试信息

2024-08-03 14:20:35 - my_app - INFO - 程序正常启动

2024-08-03 14:20:35 - my_app - WARNING - 磁盘空间不足80%!

2024-08-03 14:20:35 - my_app - ERROR - 无法连接数据库!

2024-08-03 14:20:35 - my_app - CRITICAL - 系统崩溃!!!

#logger.debug('create', create)
# 方式1:添加占位符,打印变量值(推荐)
logger.debug('创建向量库参数: create=%s', create)  # 假设create是布尔值或其他变量

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐