Skip to main content
Version: Next

Zerolog

Release Discord Test

Zerolog logging support for Fiber.

Compatible with Fiber v3.

Go version support

We only support the latest two versions of Go. Visit https://go.dev/doc/devel/release for more information.

Install

go get -u github.com/gofiber/fiber/v3
go get -u github.com/gofiber/contrib/v3/zerolog
go get -u github.com/rs/zerolog/log

Signature

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

Config

PropertyTypeDescriptionDefault
Nextfunc(fiber.Ctx) boolDefine a function to skip this middleware when it returns true.nil
Logger*zerolog.LoggerAdd a custom zerolog logger.zerolog.New(os.Stderr).With().Timestamp().Logger()
GetLoggerfunc(fiber.Ctx) zerolog.LoggerGet a custom zerolog logger. If set, the returned logger replaces Logger.nil
Fields[]stringAdd the fields you want to log.[]string{"latency", "status", "method", "url", "error"}
SkipFieldfunc(string, fiber.Ctx) boolSkip logging a field when it returns true.nil
SkipHeaderfunc(string, fiber.Ctx) boolSkip logging a header when it returns true.nil
WrapHeadersboolWrap headers into a dictionary.
If false: {"method":"POST", "header-key":"header value"}
If true: {"method":"POST", "reqHeaders":{"header-key":"header value"}}
false
FieldsSnakeCaseboolUse snake case for FieldResBody, FieldQueryParams, FieldBytesReceived, FieldBytesSent, FieldRequestID, FieldReqHeaders, FieldResHeaders.
If false: {"method":"POST", "resBody":"v", "queryParams":"v"}
If true: {"method":"POST", "res_body":"v", "query_params":"v"}
false
Messages[]stringCustom response messages.[]string{"Server error", "Client error", "Success"}
Levels[]zerolog.LevelCustom response levels.[]zerolog.Level{zerolog.ErrorLevel, zerolog.WarnLevel, zerolog.InfoLevel}
GetResBodyfunc(c fiber.Ctx) []byteDefine a function to get the response body when it returns non-nil.
For example, with compress middleware the body can be unreadable; GetResBody lets you provide a readable body.
nil

Example

package main

import (
"os"

middleware "github.com/gofiber/contrib/v3/zerolog"
"github.com/gofiber/fiber/v3"
"github.com/rs/zerolog"
)

func main() {
app := fiber.New()
logger := zerolog.New(os.Stderr).With().Timestamp().Logger()

app.Use(middleware.New(middleware.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")
}
}