news 2026/7/11 22:33:52

LogMiddleWare - SDK实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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信息清除

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 22:33:41

高精度ADC ADS122U04与PIC18F2515的接口设计与应用

1. 项目背景与核心需求在现代电子测量系统中,将模拟信号转换为数字信号是一个基础且关键的环节。ADS122U04作为TI公司推出的24位Δ-Σ型ADC,配合PIC18F2515微控制器,能够实现高精度的模拟信号数字化。这个组合特别适合需要高分辨率、低噪声测…

作者头像 李华
网站建设 2026/7/11 22:32:25

GPT-5.6 Sol Ultra 证明了一个数学猜想:这件事为什么不一样

过去几年,AI 在数学上的进展大多集中在"解题"上——奥林匹克竞赛题、微积分计算、定理证明的辅助工具。但 7 月 10 日 OpenAI 公布的一件事不太一样:GPT-5.6 Sol Ultra 独立完成了一个数学猜想的证明——Cycle Double Cover Conjecture&#x…

作者头像 李华
网站建设 2026/7/11 22:30:33

3分钟搞定!Blender 3MF格式插件:3D打印工作流终极解决方案

3分钟搞定!Blender 3MF格式插件:3D打印工作流终极解决方案 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 还在为Blender无法直接导出3D打印机专用…

作者头像 李华
网站建设 2026/7/11 22:27:05

openEuler OBS故障排除手册:常见问题与解决方案大全

openEuler OBS故障排除手册:常见问题与解决方案大全 【免费下载链接】openeuler-obs Open build service system for openEuler community. 项目地址: https://gitcode.com/openeuler/openeuler-obs 前往项目官网免费下载:https://ar.openeuler.o…

作者头像 李华
网站建设 2026/7/11 22:23:53

Logstash插件深度解析:Input/Filter/Output协同机制与生产避坑指南

1. 这不是“插件列表”,而是Logstash的神经中枢——为什么你总在Filter里卡住、Input配置反复失败、Output丢数据?ELK日志分析系统里,Logstash从来不是那个默默无闻的搬运工。它其实是整条数据流水线的调度室、翻译官和质检员。而真正决定这条…

作者头像 李华
网站建设 2026/7/11 22:23:30

克罗恩病治疗哪家强?94项研究给出答案

哪些药能快速控制病情?克罗恩病是一种肠道炎症性疾病,很多患者用传统药效果不好。这项研究分析了94项临床试验,比较了不同生物制剂的效果。在快速让病情好转(诱导缓解)方面:效果最明确(高等级证…

作者头像 李华