用途:这是一个用于把埋点从 Span Event API(AddEvent、RecordException 及语言等价方法)迁移到 Logs API 的技能,遵循已通过的 OTEP 4430 弃用计划。Span Events 概念本身仍然有效,可通过与活动 span 关联的日志发出,并可选桥接回 span proto。
主要能力与用法:先做迁移前准备,确认 SDK 版本支持基于日志的事件、是否已配置 LoggerProvider、下游消费方是否依赖 span proto 中的 span 事件;然后扫描代码中的 AddEvent、add_event、addEvent、RecordException、record_exception、recordException、RecordError、record_error、AddException 及语言变体,并按决策树把每个调用点分类为“迁移为日志事件”“转为 span 属性”或“移除”。迁移时需保证日志记录携带正确的 span 上下文、事件名、属性和时间戳;异常使用适用的语义约定事件名,并保留 exception.type 与 exception.message(至少一项),必要时加 exception.stacktrace。Go 1.47.0+ 用根包的 otel.Logger(otel/log/global 已弃用),log.Record.AddAttributes 接受 attribute.KeyValue,用 Record.SetEventName 设事件名;Java 中 contrib 的 EventToSpanEventBridge 在 opentelemetry-java-contrib v1.60.0 被移除,改用 opentelemetry-sdk-extension-incubator 的 EventToSpanEventBridge。若需向后兼容,在 SDK 层配置把日志事件转回 span 事件的处理桥。
限制与状态:截至 2026-10-03,OTEP 4430 已接受,trace API 的 AddEvent/RecordException 尚未在规范中正式标记为弃用,现有 span-event 调用应视为迁移候选而非自动无效;部分 SDK 等价方法状态已变(如 .NET 的 Activity.RecordException 已 [Obsolete])。完成时需按核对清单逐项确认并附文件证据,未解决项需修补或标记不适用;不提供 HTML,缺失信息暂未提供。