logger

package module
v0.2.5 Latest Latest
Warning

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

Go to latest
Published: Sep 16, 2022 License: MIT Imports: 8 Imported by: 191

README

logger

Run Tests codecov Go Report Card GoDoc

Gin middleware/handler to logger url path using rs/zerolog.

Example

package main

import (
  "fmt"
  "net/http"
  "regexp"
  "time"

  "github.com/gin-contrib/logger"
  "github.com/gin-contrib/requestid"
  "github.com/gin-gonic/gin"
  "github.com/rs/zerolog"
  "github.com/rs/zerolog/log"
)

var rxURL = regexp.MustCompile(`^/regexp\d*`)

func main() {
  r := gin.New()

  // Add a logger middleware, which:
  //   - Logs all requests, like a combined access and error log.
  //   - Logs to stdout.
  // r.Use(logger.SetLogger())

  // Example pong request.
  r.GET("/pong", logger.SetLogger(), func(c *gin.Context) {
    c.String(http.StatusOK, "pong "+fmt.Sprint(time.Now().Unix()))
  })

  // Example ping request.
  r.GET("/ping", logger.SetLogger(
    logger.WithSkipPath([]string{"/skip"}),
    logger.WithUTC(true),
    logger.WithSkipPathRegexp(rxURL),
  ), func(c *gin.Context) {
    c.String(http.StatusOK, "pong "+fmt.Sprint(time.Now().Unix()))
  })

  // Example skip path request.
  r.GET("/skip", logger.SetLogger(
    logger.WithSkipPath([]string{"/skip"}),
  ), func(c *gin.Context) {
    c.String(http.StatusOK, "pong "+fmt.Sprint(time.Now().Unix()))
  })

  // Example skip path request.
  r.GET("/regexp1", logger.SetLogger(
    logger.WithSkipPathRegexp(rxURL),
  ), func(c *gin.Context) {
    c.String(http.StatusOK, "pong "+fmt.Sprint(time.Now().Unix()))
  })

  // Example skip path request.
  r.GET("/regexp2", logger.SetLogger(
    logger.WithSkipPathRegexp(rxURL),
  ), func(c *gin.Context) {
    c.String(http.StatusOK, "pong "+fmt.Sprint(time.Now().Unix()))
  })

  // add custom fields.
  r.GET("/id", requestid.New(requestid.WithGenerator(func() string {
    return "foobar"
  })), logger.SetLogger(
    logger.WithLogger(func(c *gin.Context, l zerolog.Logger) zerolog.Logger {
      return l.With().
        Str("id", requestid.Get(c)).
        Str("foo", "bar").
        Str("path", c.Request.URL.Path).
        Str("traceID", trace.SpanFromContext(c.Request.Context()).SpanContext().TraceID().String()).
        Logger()
    }),
  ), func(c *gin.Context) {
    c.String(http.StatusOK, "pong "+fmt.Sprint(time.Now().Unix()))
  })

  // Listen and Server in 0.0.0.0:8080
  if err := r.Run(":8080"); err != nil {
    log.Fatal().Msg("can' start server with 8080 port")
  }
}

Screenshot

Run app server:

go run _example/main.go

Test request:

curl http://localhost:8080/ping
curl http://localhost:8080/pong

screenshot

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SetLogger

func SetLogger(opts ...Option) gin.HandlerFunc

SetLogger initializes the logging middleware.

Types

type Fn added in v0.2.4

type Option added in v0.1.0

type Option interface {
	// contains filtered or unexported methods
}

Option specifies instrumentation configuration options.

func WithClientErrorLevel added in v0.2.2

func WithClientErrorLevel(lvl zerolog.Level) Option

func WithDefaultLevel added in v0.2.2

func WithDefaultLevel(lvl zerolog.Level) Option

func WithLogger added in v0.1.0

func WithLogger(fn func(*gin.Context, zerolog.Logger) zerolog.Logger) Option

WithLogger set custom logger func

func WithServerErrorLevel added in v0.2.2

func WithServerErrorLevel(lvl zerolog.Level) Option

func WithSkipPath added in v0.1.0

func WithSkipPath(s []string) Option

WithSkipPath skip URL path by specfic pattern

func WithSkipPathRegexp added in v0.1.0

func WithSkipPathRegexp(s *regexp.Regexp) Option

WithSkipPathRegexp skip URL path by regexp pattern

func WithUTC added in v0.1.0

func WithUTC(s bool) Option

WithUTC returns t with the location set to UTC.

func WithWriter added in v0.2.0

func WithWriter(s io.Writer) Option

WithWriter change the default output writer. Default is gin.DefaultWriter

Jump to

Keyboard shortcuts

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