v2版本开始,glog组件将ctx上下文变量作为日志打印的必需参数。

自定义CtxKeys

日志组件支持自定义的键值打印,通过ctx上下文变量中读取。

使用配置

  1. # 日志组件配置
  2. logger:
  3. Path: "/var/log/my-app"
  4. Level: "all"
  5. Stdout: false
  6. CtxKeys: ["RequestId"]

其中CtxKeys用于配置需要从context.Context接口对象中读取并输出的键名。

日志输出

使用上述配置,然后在输出日志的时候,通过Ctx链式操作方法指定输出的context.Context接口对象,例如:

  1. ctx := context.WithValue(context.Background(), "RequestId", "123456789")
  2. g.Log().Error(ctx,"runtime error")
  3. // May Output:
  4. // 2020-06-08 20:17:03.630 [ERRO] {123456789} runtime error
  5. // Stack:
  6. // ...

日志示例

日志组件-Context - 图1

传递给Handler

如果开发者自定义了日志对象的Handler,那么每个日志打印传递的ctx上下文变量将会传递给Handler中。关于日志Handler的介绍请参考章节:日志组件-Handler

链路跟踪支持

glog组件支持OpenTelemetry标准的链路跟踪特性,该支持是内置的,无需开发者做任何设置,具体请参考章节:服务链路跟踪

日志组件-Context - 图2