echozap

package module
v1.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2023 License: MIT Imports: 6 Imported by: 0

README

echozap - BerryPay Public Fork

Middleware for Golang Echo framework that provides integration with Uber´s Zap logging library for logging HTTP requests.

Commitizen friendly semantic-release

Actions Status Codacy Badge Codacy Badge

Pre-requisites

Usage

package main

import (
	"net/http"

	"github.com/berrypay/echozap"
	"github.com/labstack/echo/v4"
	"go.uber.org/zap"
)

func main() {
	e := echo.New()

	zapLogger, _ := zap.NewProduction()

	e.Use(echozap.ZapLogger(zapLogger))

	e.GET("/", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello, World!")
	})
	e.Logger.Fatal(e.Start(":1323"))
}

Logged details

The following information is logged:

  • Status Code
  • Time
  • Uri
  • Method
  • Hostname
  • Remote IP Address

Configuration

Customization can be made on 2 configurable items:

  1. Skipper: skip logging based on the given condition
  2. IncludeHeader: add custom log field based on the provided list of header keys

Usage:

package main

import (
	"net/http"

	"github.com/berrypay/echozap"
	"github.com/labstack/echo/v4"
	"go.uber.org/zap"
)

func main() {
	e := echo.New()

	zapLogger, _ := zap.NewProduction()

	e.Use(echozap.ZapLoggerWithConfig(zapLogger, echozap.ZapLoggerConfig{
        Skipper: nil,
		IncludeHeader: []string{
			echo.HeaderXRequestID,
		},
	}))

	e.GET("/", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello, World!")
	})
	e.Logger.Fatal(e.Start(":1323"))
}

Todo

  • Add more customization options.

🤝 Contributing

Contributions, issues and feature requests are welcome!

Show your support

If this project have been useful for you, I would be grateful to have your support.

Give a ⭐️ to the project, or just:

Buy Me A Coffee

Author

👤 Bruno Paz

👤 Sallehuddin Abdul Latif

📝 License

Copyright © 2019 Bruno Paz. Copyright © 2023 Sallehuddin Abdul Latif

This project is MIT licensed.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// DefaultZapLoggerConfig is the default ZapLogger middleware config.
	DefaultZapLoggerConfig = ZapLoggerConfig{
		Skipper:       DefaultSkipper,
		IncludeHeader: nil,
	}
)

Functions

func DefaultSkipper

func DefaultSkipper(echo.Context) bool

DefaultSkipper returns false which processes the middleware

func ZapLogger

func ZapLogger(log *zap.Logger) echo.MiddlewareFunc

ZapLogger is a middleware and zap to provide an "access log" like logging for each request.

func ZapLoggerWithConfig

func ZapLoggerWithConfig(log *zap.Logger, config ZapLoggerConfig) echo.MiddlewareFunc

ZapLoggerWithConfig is a middleware (with configuration) and zap to provide an "access log" like logging for each request.

Types

type Skipper

type Skipper func(c echo.Context) bool

type ZapLoggerConfig

type ZapLoggerConfig struct {
	// Skipper defines a function to skip middleware
	Skipper Skipper
	// IncludeRequestId
	IncludeHeader []string
}

ZapLoggerConfig defines the config for ZapLogger middleware

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL