当前位置: 首页 > news >正文

LogMiddleWare - SDK实现

github实现链接:https://github.com/wangbhan/LogMiddleWare

1.概况:

日志现在不全,有些项目有,有些项目缺失,现在想做一个统一的、全链路追踪的SDK来潜入到每个项目中,把日志进行格式化,同时可以兼容原有的日志系统。

2.整体思路:

采用OpenTelemetry + Sanic 中间件SDK的方式来实现日志的嵌入

  • 功能实现主要是采用OpenTelemetry的span(进程级别隔离)和context的contextvar(线程级别隔离 - 具体可以参考https://www.yuque.com/lariyufengdaixiaocongban/ztbnsd/uznfesr1hzwaidgp)来实现,日志定义格式如下:
字段位宽编码格式来源根请求默认值
trace_id128-bit32位小写十六进制字符串链路入口处由 OTel SDK 随机生成;跨服务调用时从 traceparent Header 继承随机生成
span_id64-bit16位小写十六进制字符串每个新 Span 创建时由 OTel SDK 随机生成随机生成
parent_span_id64-bit16位小写十六进制字符串从当前 Span 的父 Span 中取得;若为根 Span 则无父全零

传递时采用http header中的traceparent,具体格式如下:

版本(固定为 00)- trace_id(32位 hex)- span_id(16位 hex)- 追踪标志(01 表示采样)

  • 采用Sanic框架中间件的方式来封装,整体架构设计如下(如果要适配其他框架需要做改动):
模块文件职责
配置模块config.py定义TraceConfig数据类,统一管理服务名、导出方式、日志格式等所有参数
中间件模块middleware.pySanicTraceMiddleware核心类,在每个 HTTP 请求前后自动创建/结束 Span
传播模块propagation.py从入站请求头提取父上下文,向出站请求头注入 traceparent
日志集成模块logging_integration.pyTraceContextFilter日志过滤器,自动向每条日志记录注入追踪字段
提供者与导出模块provider.py/exporters.py初始化全局单例 TracerProvider,管理多种 Span 导出器

具体实现主要是在本SDK的middleware中,其中主要是做一个中间件请求的拦截器,将信息从请求头中提取,如果没有则自己生成再注入到请求头中,并且在请求响应出来之后需要将contextvar中存储的span信息清除

http://www.jsqmd.com/news/1170196/

相关文章:

  • 使用消息泵让个人窗口项目捕获键盘输入
  • AI智能体驱动的求职申请自动化工作流:技术原理与工程实践
  • 【仅限前500名】Cursor AI深色模式强制同步方案:跨设备/跨OS/跨编辑器统一暗色策略(含VS Code双模同步脚本)
  • TB67H480FNG与PIC18F86J50电机控制方案解析
  • 亲身到店探访深圳江诗丹顿官方售后服务中心|网点地址与官方热线(2026年7月最新) - 江诗丹顿官方服务中心
  • mba论文开题报告的研究内容怎么写
  • 2026年重庆老牌牙齿矫正医疗机构:经验与技术优势深度剖析
  • DeepSeek数学推理能力跃迁指南(从符号推演到定理生成的7层认知升级)
  • SPI、I2C、UART 3大嵌入式总线深度对比:从速率、引脚到抗干扰的10项关键指标
  • 3分钟搞定!Blender 3MF格式插件:3D打印工作流终极解决方案
  • VSCode Remote-WSL 1.89 配置:3步连接Ubuntu 22.04,解决WSL2 0x800701bc报错
  • 科技巨头温室气体排放量上升,微软投资或致排放进一步增加!
  • 技术发布信号监测与工程准备:开发者应对AI模型更新策略
  • 如何在五分钟内掌握网盘直链下载助手:开源项目的完整使用指南
  • 2026年7月四氟波纹管、铁氟龙管、四氟金属软管优质源头厂家推荐报告 - 新闻快传
  • 【新手入门】 OpenClaw 自动化程序安装与功能调试教程(含安装包)
  • 瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
  • STM32 智能输液系统 3 大模块硬件选型对比:步进电机驱动 vs 蠕动泵 vs 电磁阀
  • Codex本地编程代理框架:国产大模型接入与定制化部署指南
  • 2026 广州搬家避坑干货|全市主流搬家品牌实测打分,资质价格售后全解析,教你一站式选出靠谱服务商 - gzdjxd
  • TB6593FNG与PIC18F86K90的直流电机驱动方案
  • 24位ΔΣ ADC与MCU构建高精度信号采集系统
  • ThinkPad风扇控制终极指南:如何彻底解决散热与噪音问题
  • Citra模拟器:在PC上体验任天堂3DS游戏的完整解决方案
  • 湖南优质护理专业优选:衡阳科技职业学院王牌护理专业全解析 - 新闻快传
  • openEuler/imageTailor常见问题解答:从制作失败到镜像优化的解决方案
  • mba人力资源论文开题报告
  • Gemini 3.5 Flash与Antigravity harness:AI智能体如何变革天文数据分析
  • 百度智能云AI零售解决方案:从数据中台到精准营销的技术实践
  • 手把手编写儿童手机远程监控App之vue3使用高德地图2