新手教学系列——利用 Loguru 对日志进行分类处理

在现代应用程序中,日志记录是确保系统健康运行的关键因素之一。尤其在复杂的系统中,我们可能需要将日志按不同的需求进行分类和处理。Loguru 作为一款功能强大的日志库,提供了灵活的日志记录方式。今天,我们将探讨如何使用 Loguru 的过滤功能来分类处理系统日志和关键节点日志,以满足特定需求。

需求场景

假设我们有两个主要的日志需求: 1. 标准系统日志 :记录系统的常规信息,如运行状态和普通操作。 2. 关键节点日志:在系统的关键节点记录 Elasticsearch 相关的日志,以便进行详细分析和追踪。

配置 Loguru 记录系统日志和 Elasticsearch 日志

在使用 Loguru 之前,我们需要先进行基础配置,确保日志记录的准确性和有效性。下面的配置代码展示了如何设置不同的日志处理方式:

复制代码
# 移除默认的日志处理器
logger.remove()

# 配置标准系统日志处理器
logger.add(
    sys.stderr,  # 将日志输出到标准错误流
    level=env.str('LOGGER_LEVEL', 'INFO'),  # 日志级别,通过环境变量设置,默认为 INFO
    format=env.str('LOGURU_FORMAT', DEFAULT_LOG_FORMAT),  # 日志格式,通过环境变量设置,使用默认格式
    backtrace=env.bool('LOGURU_BACKTRACE', True),  # 是否启用堆栈回溯
    diagnose=env.bool('LOGURU_DIAGNOSE', True),  # 是否启用诊断信息
    filter=lambda record: record["extra"].get("write_tag") is None,  # 过滤器:只记录没有 write_tag 的日志
)

# 配置 Elasticsearch 日志处理器
logger.add(
    os.path.join(LOGS_PATH, 'task.log'),  # 将日志输出到指定的文件
    level=env.str('ES_LOG_LEVEL', 'INFO'),  # Elasticsearch 日志级别,通过环境变量设置,默认为 INFO
    rotation=env.str('TASK_LOG_ROTATION', '500 MB'),  # 日志文件轮换策略,达到 500 MB 后轮换
    format='{message}',  # Elasticsearch 日志格式,只记录消息部分
    filter=lambda record: record["extra"].get("write_tag") == 'elasticsearch',  # 过滤器:只记录 write_tag 为 'elasticsearch' 的日志
)

# 配置异常处理选项
logger.opt(exception=True)

如何使用 Loguru 进行日志记录

在实际使用中,我们可以通过绑定 write_tag 来区分日志的目标。例如,若我们要记录 Elasticsearch 相关日志,可以这样进行配置:

复制代码
# 绑定 write_tag,并记录 Elasticsearch 日志
logger.bind(write_tag="elasticsearch").info(orjson.dumps(es_log).decode('utf-8'))

便利性

Loguru 的设计旨在提供一种简单且无感的日志记录方式。通过直接从 loguru 模块导入 logger 对象,我们可以很方便地在代码中记录各种日志信息,而无需复杂的配置。通过 write_tag,我们能够标记日志的目标,使得日志的处理更加高效和精准。

总结

使用 Loguru 进行日志分类处理不仅能够提高系统的可维护性,还能帮助我们在关键节点进行有效的监控和分析。通过合理配置日志处理器和过滤器,我们可以确保系统日志和关键节点日志的准确记录,从而更好地理解和优化系统的运行状态。

关注【程序员的开发手册】,让您少走弯路,掌握更多开发技巧和实践经验。

相关推荐
本旺5 小时前
Elasticsearch 前缀匹配性能优化实战,附4种方式即执行计划判别
大数据·elasticsearch·性能优化
hhzz6 小时前
Python大数据实战(十六):音乐推荐系统——基于协同过滤算法构建个性化歌单引擎
大数据·人工智能·python·数据挖掘·数据分析
SunnyDays10117 小时前
Python PDF 转 Markdown 详解(转换整个文档,特定页面,表格,扫描 PDF)
python·pdf 转 markdown·pdf 转 md·扫描 pdf 转 md·pdf 表格转 md
2601_954706497 小时前
云手机 API 自动化实战:Python 批量控机、挂机脚本完整实现
python·智能手机·自动化
Elastic 中国社区官方博客10 小时前
Elastic 在 Everest Group 企业搜索产品 PEAK Matrix® 评估 2026 中被评为领导者
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索
Alan_69110 小时前
聊聊 Swagger/Postman/Apifox 的真实选型与 Python 项目实战
python·测试工具·postman
智慧物业老杨11 小时前
物业绿化数智化权责管控方案:基于工单平台的双层权限追溯模块落地实践
python
Java小白笔记12 小时前
Codex Skills 分类整理
大数据·人工智能·elasticsearch·搜索引擎·ai·ai编程·ai写作
Metaphor69212 小时前
使用 Python 在 Word 文档中添加批注
python·word
FreakStudio12 小时前
WIZnet 开源方案分享:W55MH32 开发板 + 小智 AI实现以太网版本的小智机器人
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机