Skip to main content
Version: v3_loadshed_v0.x.x

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
Skipfunc(fiber.Ctx) boolDefine a function that is called after the request has been processed but before the log entry is assembled. If it returns true, logging is skipped entirely with zero overhead. This gives access to the full request context, including data set by downstream middlewares.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")
}
}