You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 20 Next »
从v2版本开始,glog组件将ctx上下文变量作为日志打印的必需参数。
v2
glog
ctx
CtxKeys
日志组件支持自定义的键值打印,通过ctx上下文变量中读取。
# 日志组件配置 logger: Path: "/var/log/my-app" Level: "all" Stdout: false CtxKeys: ["RequestId", "UserId"]
其中CtxKeys用于配置需要从context.Context接口对象中读取并输出的键名。
context.Context
使用上述配置,然后在输出日志的时候,通过Ctx链式操作方法指定输出的context.Context接口对象,例如:
Ctx
package main import ( "context" "github.com/gogf/gf/v2/frame/g" ) func main() { var ctx = context.Background() ctx = context.WithValue(ctx, "RequestId", "123456789") ctx = context.WithValue(ctx, "UserId", "10000") g.Log().Error(ctx, "runtime error") }
执行后,终端输出:
2024-01-17 21:12:12.182 [ERRO] {123456789, 10000} runtime error Stack: 1. main.main /Users/txqiangguo/Workspace/gogf/gf/example/os/log/ctx_keys/main.go:13
Handler
如果开发者自定义了日志对象的Handler,那么每个日志打印传递的ctx上下文变量将会传递给Handler中。关于日志Handler的介绍请参考章节:日志组件-Handler
glog组件支持OpenTelemetry标准的链路跟踪特性,该支持是内置的,无需开发者做任何设置,具体请参考章节:服务链路跟踪
OpenTelemetry