0

0

Python 日志系统与监控的结合实践

舞姬之光

舞姬之光

发布时间:2026-02-15 18:43:02

|

127人浏览过

|

来源于php中文网

原创

logging.getlogger() 返回的实例在多进程里不共享,因子进程会重新初始化日志系统,导致父进程配置的处理器失效或冲突;需在子进程单独配置或使用 queuehandler + queuelistener。

python 日志系统与监控的结合实践

为什么 logging.getLogger() 返回的实例在多进程里不共享

Python 的 logging 模块本身不是进程安全的,getLogger() 拿到的是当前进程内的对象,子进程会重新初始化日志系统,导致父进程配置的日志处理器(比如文件写入、网络发送)在子进程中失效或重复触发。

常见错误现象:INFO 级别日志在主进程能写入文件,fork 出的子进程却完全没输出,或者多个子进程同时往同一个文件写导致内容错乱。

  • 使用 multiprocessing 时,应在每个子进程启动后单独调用 logging.basicConfig() 或重建 Handler,不要复用父进程的 logger 实例
  • 若需集中收集日志,推荐改用 QueueHandler + QueueListener:子进程只往队列发日志,由单独监听线程统一处理
  • 避免在子进程中调用 logging.basicConfig() 多次——它默认有“仅首次生效”逻辑,但不同进程间互不影响,容易误以为配置成功

如何让日志自动带上 trace_id 支持监控链路追踪

标准 Formatter 不知道当前请求上下文,必须靠 LogRecord 动态注入字段。Django/Flask 等框架有中间件支持,但纯 logging 需手动绑定。

使用场景:排查线上某个请求耗时高,需要从 Prometheus/Grafana 查到对应日志;或 ELK 中按 trace_id 聚合全部相关日志行。

立即学习Python免费学习笔记(深入)”;

AI工具箱导航
AI工具箱导航

AMZ123旗下的AI工具导航网站

下载
  • LoggerAdapter 包裹 logger,通过 extra 参数传入 trace_id,再在 Formatterformat() 中读取 record.trace_id
  • 别直接修改 record.__dict__ —— 某些 handler(如 SocketHandler)序列化时会丢掉自定义字段
  • 如果用 structlog,优先走它的绑定机制(bind()),比原生 logging 更稳
adapter = logging.LoggerAdapter(logger, {"trace_id": "abc123"})
adapter.info("user login")  # 输出含 trace_id 的日志行

logging + Prometheus 的典型集成方式有哪些

日志本身不是指标,但日志量、错误率、响应延迟分布这些可以从日志里提取出来喂给 Prometheus。关键不是“把日志塞进 Prometheus”,而是选对采集层和聚合逻辑。

性能影响:每条日志都实时解析并上报 Counter 是灾难性的,应避免在业务线程中做正则匹配+HTTP 上报。

  • filebeatfluent-bit 做日志采集,在采集端用 grok 过滤出 status_codeduration_ms 等字段,再通过 prometheus_exporter 插件暴露指标
  • 如果必须代码内埋点,用 prometheus_client.Counter 统计错误次数,但只在关键路径上 .inc(),别在每条 info 日志后加一句
  • 注意时间窗口:日志打点时间和指标采集时间不同步,Prometheus 抓取间隔设为 15s 时,rate(http_errors_total[1m]) 可能漏掉短突发

为什么日志文件没滚动、磁盘爆满却没报错

RotatingFileHandler 默认不检查磁盘空间,只按大小或数量轮转;TimedRotatingFileHandler 在 Windows 下可能因文件锁无法删除旧文件;更隐蔽的是,backupCount=0maxBytes=0 会让轮转彻底失效。

常见错误现象:日志目录占满 100GB,ls -l 显示只有单个 app.log 文件持续增长,app.log.1 等备份文件一个没有。

  • 确认 maxBytes > 0backupCount > 0,例如 RotatingFileHandler(..., maxBytes=10485760, backupCount=5)
  • Linux 下检查是否有残留的 deleted 文件句柄:lsof | grep deleted | grep app.log,有就说明进程还在写已删文件,得重启服务
  • 别依赖 delay=True 来“延迟创建文件”——它只是推迟 open() 调用,不解决轮转逻辑问题

最麻烦的情况是日志路径权限不对,handler 静默失败,连 ERROR 都打不出来。上线前务必用 touch /path/to/log/app.log && chmod 644 $_ 手动验证可写性。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python Web 框架 Django 深度开发
Python Web 框架 Django 深度开发

本专题系统讲解 Python Django 框架的核心功能与进阶开发技巧,包括 Django 项目结构、数据库模型与迁移、视图与模板渲染、表单与认证管理、RESTful API 开发、Django 中间件与缓存优化、部署与性能调优。通过实战案例,帮助学习者掌握 使用 Django 快速构建功能全面的 Web 应用与全栈开发能力。

60

2026.02.04

Python Flask框架
Python Flask框架

本专题专注于 Python 轻量级 Web 框架 Flask 的学习与实战,内容涵盖路由与视图、模板渲染、表单处理、数据库集成、用户认证以及RESTful API 开发。通过博客系统、任务管理工具与微服务接口等项目实战,帮助学员掌握 Flask 在快速构建小型到中型 Web 应用中的核心技能。

97

2025.08.25

Python Flask Web框架与API开发
Python Flask Web框架与API开发

本专题系统介绍 Python Flask Web框架的基础与进阶应用,包括Flask路由、请求与响应、模板渲染、表单处理、安全性加固、数据库集成(SQLAlchemy)、以及使用Flask构建 RESTful API 服务。通过多个实战项目,帮助学习者掌握使用 Flask 开发高效、可扩展的 Web 应用与 API。

73

2025.12.15

什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

180

2024.05.11

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

222

2025.12.18

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

865

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

446

2024.06.27

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

351

2023.10.18

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

139

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 4.3万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号