zap日志库配置链路追踪
承蒙大家厚爱,我的《Go语言之路》的纸质版图书已经上架京东,有需要的朋友请点击 此链接 购买。
Open-Telemetry的第三方软件包合集 包括了多个社区中常用库的OpenTelemetry支持。随着 OpenTelemetry的不断迭代,相信整个链路追踪的生态也会越发完善。
zap日志库是业务开发中常用的日志库,要在记录日志中记录 traceID,可以直接使用 uptrace 提供的otelzap。
下载依赖
go get github.com/uptrace/opentelemetry-go-extra/otelzap
使用方法
package main
import (
"context"
"github.com/uptrace/opentelemetry-go-extra/otelzap"
"go.uber.org/zap"
)
// zap 链路追踪
func main() {
// 创建 logger
logger := otelzap.New(
zap.NewExample(), // zap实例,按需配置
otelzap.WithMinLevel(zap.InfoLevel), // 指定日志级别
otelzap.WithTraceIDField(true), // 在日志中记录 traceID
)
defer logger.Sync()
// 替换全局的logger
undo := otelzap.ReplaceGlobals(logger)
defer undo()
otelzap.L().Info("replaced zap's global loggers") // 记录日志
otelzap.Ctx(context.TODO()).Info("... and with context") // 从ctx中获取traceID并记录
}