Zerolog

February 20, 2026 ยท View on GitHub

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")
    }
}