HTTP请求ID与日志关联的实战
介绍
Hertz 作为一个高性能的 HTTP 框架,它提供了 requestid 中间件以及内置的 hlog 日志库与一些 hlog 日志组件的扩展 ,本文主要讲解如何将请求ID与日志关联方便用户查找日志。
实战
请求ID中间件介绍
Hertz 的 requestid 中间件是根据 Gin 框架的 requestid 修改并适配 Hertz 。它的主要作用是在请求的响应和 context
中添加 rquestid
,用于唯一标识一次请求。
它的使用方式如下:
package main
import (
"context"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/app/server"
"github.com/cloudwego/hertz/pkg/common/utils"
"github.com/cloudwego/hertz/pkg/protocol/consts"
"github.com/hertz-contrib/requestid"
)
func main() {
h := server.Default()
h.Use(requestid.New())
// Example ping request.
h.GET("/ping", func(ctx context.Context, c *app.RequestContext) {
c.JSON(consts.StatusOK, utils.H{
"ping": "pong"})
})
h.Spin()