You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 11 Next »
glog支持标准库context.Context接口对象中上下文变量的自动读取打印。
glog
context.Context
我们推荐使用配置文件来对上下文中的键名进行配置,例如:
# 日志组件配置 [logger] Path = "/var/log/my-app" Level = "all" Stdout = false CtxKeys = ["RequestId"]
其中CtxKeys用于配置需要从context.Context接口对象中读取并输出的键名。
CtxKeys
在输出日志的时候,需要通过Ctx链式操作方法指定输出的context.Context接口对象,例如:
Ctx
ctx := context.WithValue(context.Background(), "RequestId", "123456789") g.Log().Ctx(ctx).Error("runtime error") // May Output: // 2020-06-08 20:17:03.630 [ERRO] {RequestId: 123456789} runtime error // Stack: // ...
从goframe v1.15版本开始,日志组件增加了对OpenTelemetry规范的链路跟踪支持,该支持是标准化形式的,无需开发者做任何设置,具体请参考章节:链路跟踪
goframe v1.15
OpenTelemetry
除了链路跟踪能够实现全链路的TraceId记录打印之外,由于框架组件完备并且设计良好,因此glog组件也可以实现最小成本的自定义全链路跟踪信息打印。像这样:
TraceId
RequestId
通过中间件往Context中注入RequestId,并且将RequestId写入到返回的Header中。
Context
Header
Context Key
为默认的logger以及database logger设置Context Key,便于日志打印时自动读取。
logger
database logger