Fiberzerolog
对 Fiber 的 Zerolog 日志支持。
注意:需要 Go 1.18 或更高版本
安装
此中间件支持 Fiber v2。
go get -u github.com/gofiber/fiber/v2
go get -u github.com/gofiber/contrib/fiberzerolog
go get -u github.com/rs/zerolog/log
签名
fiberzerolog.New(config ...fiberzerolog.Config) fiber.Handler
配置
属性 | 类型 | 描述 | 默认值 |
---|---|---|---|
下一个 | func(*Ctx) bool | 定义一个函数,当返回 true 时跳过此中间件 | nil |
Logger | *zerolog.Logger | 添加自定义 zerolog logger。 | zerolog.New(os.Stderr).With().Timestamp().Logger() |
GetLogger | func(*fiber.Ctx) zerolog.Logger | 获取自定义 zerolog logger,如果定义了此函数,返回的 logger 将替换 Logger 的值。 | nil |
Fields | []string | 添加你想看到的字段。 | []string{"latency", "status", "method", "url", "error"} |
WrapHeaders | bool | 将 headers 包装到字典中。 如果为 false: {"method":"POST", "header-key":"header value"} 如果为 true: {"method":"POST", "reqHeaders": {"header-key":"header value"}} | false |
FieldsSnakeCase | bool | 对字段使用 snake_case 格式:FieldResBody, FieldQueryParams, FieldBytesReceived, FieldBytesSent, FieldRequestId, FieldReqHeaders, FieldResHeaders。 如果为 false: {"method":"POST", "resBody":"v", "queryParams":"v"} 如果为 true: {"method":"POST", "res_body":"v", "query_params":"v"} | false |
Messages | []string | 自定义响应消息。 | []string{"Server error", "Client error", "Success"} |
Levels | []zerolog.Level | 自定义响应级别。 | []zerolog.Level{zerolog.ErrorLevel, zerolog.WarnLevel, zerolog.InfoLevel} |
SkipURIs | []string | 跳过对这些 URI 的日志记录。 | []string{} |
GetResBody | func(c *fiber.Ctx) []byte | 定义一个函数,当返回非 nil 时获取响应体。 例如:当使用 compress 中间件时,resBody 不可读。你可以设置 GetResBody 函数来获取可读的 resBody。 | nil |
示例
package main
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/contrib/fiberzerolog"
"github.com/rs/zerolog"
)
func main() {
app := fiber.New()
logger := zerolog.New(os.Stderr).With().Timestamp().Logger()
app.Use(fiberzerolog.New(fiberzerolog.Config{
Logger: &logger,
}))
app.Get("/", func (c *fiber.Ctx) error {
return c.SendString("Hello, World!")
})
if err := app.Listen(":3000"); err != nil {
logger.Fatal().Err(err).Msg("Fiber app error")
}
}