Skip to content

adlandh/echo-zap-middleware

Repository files navigation

echo-zap-middleware

Echo Zap Logger middleware

Usage:

go get github.com/adlandh/echo-zap-middleware

In your app:

package main

import (
	"net/http"

	echo_zap_middleware "github.com/adlandh/echo-zap-middleware"
	"github.com/labstack/echo/v4"
	"go.uber.org/zap"
)

func main() {
	// Create zap logger
	logger, err := zap.NewDevelopment()
	if err != nil {
		panic(err)
	}

	// Then create your app
	app := echo.New()

	// Add middleware
	app.Use(echo_zap_middleware.Middleware(
		logger,
		echo_zap_middleware.ZapConfig{
			// if you would like to save your request or response headers as tags, set AreHeadersDump to true
			AreHeadersDump: true,
			// if you would like to save your request or response body as tags, set IsBodyDump to true
			IsBodyDump: true,
			// No dump for /pong
			// No dump for gzip
			BodySkipper: func(c echo.Context) (bool, bool) {
				if c.Request().URL.Path == "/pong" { 
					return true, true 
				}
				if c.Request().Header.Get("Content-Encoding") == "gzip" {
					return true, true
				}
				return false, false
			},
		}))

	// Add some endpoints
	app.GET("/ping", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello, World, from Ping!")
	})

	app.GET("/pong", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello, World, from Pong!")
	})

	// And run it
	app.Logger.Fatal(app.Start(":3000"))
}

About

zap logger middleware for echo

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages