跳到主要内容
版本: websocket_v1.x.x

Fiberzap

Release Discord Test

Zap 对 Fiber 的日志支持。

注意: 需要 Go 1.19 或更高版本

安装

此中间件支持 Fiber v2。

go get -u github.com/gofiber/fiber/v2
go get -u github.com/gofiber/contrib/fiberzap/v2
go get -u go.uber.org/zap

签名

fiberzap.New(config ...fiberzap.Config) fiber.Handler

配置

属性类型描述默认值
下一页func(*Ctx) bool定义一个函数,当返回 true 时跳过此中间件nil
Logger*zap.Logger添加自定义 zap 日志器。zap.NewDevelopment()
Fields[]string添加您想要查看的字段。[]string{"latency", "status", "method", "url"}
FieldsFunc[]zap.Field定义一个函数来添加自定义字段。nil
Messages[]string自定义响应消息。[]string{"服务器错误", "客户端错误", "成功"}
Levels[]zapcore.Level自定义响应级别。[]zapcore.Level{zapcore.ErrorLevel, zapcore.WarnLevel, zapcore.InfoLevel}
SkipURIs[]string跳过记录这些 URI。[]string{}
GetResBodyfunc(c *fiber.Ctx) []byte定义一个函数,当返回非 nil 时获取响应体。
例如:当使用压缩中间件时,resBody 不可读。您可以设置 GetResBody 函数来获取可读的 resBody。
nil

示例

package main

import (
"log"

"github.com/gofiber/fiber/v2"
"github.com/gofiber/contrib/fiberzap/v2"
"go.uber.org/zap"
)

func main() {
app := fiber.New()
logger, _ := zap.NewProduction()
defer logger.Sync()

app.Use(fiberzap.New(fiberzap.Config{
Logger: logger,
}))

app.Get("/", func (c *fiber.Ctx) error {
return c.SendString("Hello, World!")
})

log.Fatal(app.Listen(":3000"))
}

NewLogger

签名

fiberzap.NewLogger(config ...fiberzap.LoggerConfig) *fiberzap.LoggerConfig

LoggerConfig

属性类型描述默认值
CoreConfigs[]CoreConfig为 zapcore 定义配置fiberzap.LoggerConfigDefault
SetLogger*zap.Logger添加自定义 zap 日志器。如果非 nil,ZapOptionsCoreConfigsSetLevelSetOutput 将被忽略。nil
ExtraKeys[]string允许用户从上下文中记录额外的值。[]string{}
ZapOptions[]zap.Option允许用户配置由 zap 提供的 zap.Option。[]zap.Option{}

示例

package main

import (
"context"
"github.com/gofiber/contrib/fiberzap/v2"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/log"
)

func main() {
app := fiber.New()
logger := fiberzap.NewLogger(fiberzap.LoggerConfig{
ExtraKeys: []string{"request_id"},
})
log.SetLogger(logger)
defer logger.Sync()

app.Use(func(c *fiber.Ctx) error {
ctx := context.WithValue(c.UserContext(), "request_id", "123")
c.SetUserContext(ctx)
return c.Next()
})
app.Get("/", func(c *fiber.Ctx) error {
log.WithContext(c.UserContext()).Info("Hello, World!")
return c.SendString("Hello, World!")
})
log.Fatal(app.Listen(":3000"))
}