是否可以将应用程序提供的标准日志和错误放入跨度?
我知道我可以使用span.LogKV()
或span.LogFields()
发送一些日志,但是当应用程序记录器和span记录器具有相同的日志时,这会使代码看起来很糟糕。
我正在寻找一种将所有日志放入相应跨度的自动化方法。
答案 0 :(得分:0)
如果您使用的是具有自动配置功能的Spring Boot,则会检测并使用跨度自动发送使用log4j打印的日志。
答案 1 :(得分:0)
在Go中,这不是很简单,很大程度上取决于您使用的日志记录库及其提供的接口。一个示例在Jaeger存储库的HotROD demo中实现,并且在blog post accompanying the demo中进行了描述。它在下面使用go.uber.org/zap
日志记录库,并允许编写接受Context参数的日志语句:
logger.For(ctx).Info(
"Searching for nearby drivers",
zap.String("location", location),
)
logger.For(ctx)
在幕后捕获当前的跟踪范围,并将所有日志语句添加到该范围,除了照常发送然后将其发送到stdout
。
据我所知,go.uber.org/zap
尚不支持这种本地记录模式,因此需要包装器。
如果您使用其他日志记录库,则需要进行高级操作:
span.LogKV()
或类似的API。