package main import ( "context" "github.com/gin-gonic/gin" "github.com/yuninks/loggerx" "github.com/yuninks/loggerx/middleware" ) // 运行: go run ./example/gin_server // curl --location '127.0.0.1:8080/ping' func main() { ctx := context.Background() log := loggerx.NewLogger(ctx, loggerx.SetToConsole(), loggerx.SetGinLog(true), // 把 gin 自身的 access log 也收进日志文件 ) // 进程退出前落盘并释放文件句柄 defer log.Close() g := gin.New() // 用 gin.New 而不是 gin.Default,避免 access log 与中间件重复记录 g.Use(gin.Recovery()) // 生成/透传 trace id,并写回响应头 X-Trace-Id g.Use(middleware.SetGinTraceId(log)) g.Use(middleware.SetGinParams(log)) g.GET("/ping", func(c *gin.Context) { // trace id 通过 request context 传给日志,便于串起整条链路 log.Infof(c.Request.Context(), "GET /ping") c.JSON(200, gin.H{"message": "pong", "trace_id": middleware.GetTraceId(c.Request.Context(), log.GetTraceField())}) }) _ = g.Run(":8080") }