用途:该技能用于把插桩代码从已弃用的 Span Event API(AddEvent、RecordException)迁移到 Logs API,遵循 OTEP 4430 弃用计划。背景是 OpenTelemetry 正在弃用 Span.AddEvent 与 Span.RecordException,改为通过 Logs API 发出事件与异常;Span Events 概念仍有效,只是改为通过与当前 span 关联的日志发出。
主要能力与流程:先做迁移前准备,确认 SDK 版本支持基于日志的事件、项目是否配置 LoggerProvider(未配置需先设置),并判断下游消费者(后端、仪表盘、告警)是否依赖 span proto 中出现的 span events;随后扫描代码库中的 AddEvent、add_event、addEvent、RecordException、record_exception、recordException 及语言变体,对每个调用点分类(一般事件、异常记录、信息性注解),记录 span 上下文、属性和时间戳;再按决策树分类为迁移为日志事件、转换为 span 属性或移除;参照语言相关迁移模式逐点替换,确保日志记录携带正确的 span 上下文、事件名、属性和时间戳;异常需保留适用语义约定属性 exception.type 与 exception.message(至少其一),语言有意义时加 exception.stacktrace(Go 中除非错误库保留原始堆栈,否则省略,不要在发出点调用 runtime.Stack)。若需向后兼容,配置 SDK 级日志处理器把日志事件转回 span events,仅当下游要求同一 proto 信封时才需要。
使用方式与约束:需遵循强制完成循环——扫描分类、迁移、对照清单复查、重开文件以代码证据确认每项,未解决则修补或标记不适用并重复,未完成不得结束;最终答案需按 [x]/[~]/[ ] 格式报告清单并附文件引用证据。