Files

38 lines
1.0 KiB
Go
Raw Permalink Normal View History

2024-07-09 16:35:14 +08:00
package main
import (
"context"
"github.com/gin-gonic/gin"
"github.com/yuninks/loggerx"
"github.com/yuninks/loggerx/middleware"
)
2026-09-13 20:41:27 +08:00
// 运行: go run ./example/gin_server
2024-07-09 16:35:14 +08:00
// curl --location '127.0.0.1:8080/ping'
func main() {
ctx := context.Background()
2026-09-14 00:14:30 +08:00
log := loggerx.NewLogger(ctx,
loggerx.SetToConsole(),
loggerx.SetGinLog(true), // 把 gin 自身的 access log 也收进日志文件
)
2026-09-13 20:41:27 +08:00
// 进程退出前落盘并释放文件句柄
defer log.Close()
2024-07-09 16:35:14 +08:00
2026-09-14 00:14:30 +08:00
g := gin.New() // 用 gin.New 而不是 gin.Default,避免 access log 与中间件重复记录
g.Use(gin.Recovery())
2024-07-09 16:35:14 +08:00
2026-09-14 00:14:30 +08:00
// 生成/透传 trace id,并写回响应头 X-Trace-Id
g.Use(middleware.SetGinTraceId(log))
2024-07-09 16:35:14 +08:00
g.Use(middleware.SetGinParams(log))
2026-09-14 00:14:30 +08:00
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())})
2024-07-09 16:35:14 +08:00
})
2026-09-14 00:14:30 +08:00
_ = g.Run(":8080")
2024-07-09 16:35:14 +08:00
}