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

Fiberzerolog

Release Discord Test

对 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()
GetLoggerfunc(*fiber.Ctx) zerolog.Logger获取自定义 zerolog logger,如果定义了此函数,返回的 logger 将替换 Logger 的值。nil
Fields[]string添加你想看到的字段。[]string{"latency", "status", "method", "url", "error"}
WrapHeadersbool将 headers 包装到字典中。
如果为 false: {"method":"POST", "header-key":"header value"}
如果为 true: {"method":"POST", "reqHeaders": {"header-key":"header value"}}
false
FieldsSnakeCasebool对字段使用 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{}
GetResBodyfunc(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")
}
}