AI大模型入门-Python进阶-log 日志
视频链接:
不如语冰
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是布尔值或其他变量
更多推荐



所有评论(0)