lecho

package module
v2.5.2 Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2021 License: MIT Imports: 10 Imported by: 9

README

lecho 🍅

Zerolog wrapper for Echo web framework.

Installation

For Echo v4:

go get github.com/ziflex/lecho/v2

For Echo v3:

go get github.com/ziflex/lecho

Quick start

package main 

import (
	"os"
	"github.com/labstack/echo/v4"
	"github.com/labstack/echo/v4/middleware"
	"github.com/ziflex/lecho/v2"
)

func main() {
    e := echo.New()
    e.Logger = lecho.New(os.Stdout)
}
Using existing zerolog instance
package main 

import (
	"os"
	"github.com/labstack/echo/v4"
	"github.com/labstack/echo/v4/middleware"
	"github.com/ziflex/lecho/v2"
    "github.com/rs/zerolog"
)

func main() {
    log := zerolog.New(os.Stdout)
    e := echo.New()
    e.Logger = lecho.From(log)
}

Options


import (
	"os",
	"github.com/labstack/echo"
	"github.com/labstack/echo/middleware"
	"github.com/ziflex/lecho/v2"
)

func main() {
    e := echo.New()
    e.Logger = lecho.New(
       os.Stdout,
       lecho.WithLevel(log.DEBUG),
       lecho.WithFields(map[string]interface{}{ "name": "lecho factory"}),
       lecho.WithTimestamp(),
       lecho.WithCaller(),
       lecho.WithPrefix("we ❤️ lecho"),
       lecho.WithHook(...),
       lecho.WithHookFunc(...),
    )
}

Middleware

Logging requests and attaching request id to a context logger

import (
	"os",
	"github.com/labstack/echo"
	"github.com/labstack/echo/middleware"
	"github.com/ziflex/lecho/v2"
)

func main() {
    e := echo.New()
    logger := lecho.New(
            os.Stdout,
            lecho.WithLevel(log.DEBUG),
            lecho.WithTimestamp(),
            lecho.WithCaller(),
         )
    e.Logger = logger
    
    e.Use(middleware.RequestID())
    e.Use(lecho.Middleware(lecho.Config{
    	Logger: logger
    }))	
}

Helpers

Level converters

import (
    "fmt",
    "github.com/labstack/echo"
    "github.com/labstack/echo/middleware"
    "github.com/labstack/gommon/log"
    "github.com/ziflex/lecho/v2"
)

func main() {
	var z zerolog.Level
	var e log.Lvl
	
    z, e = lecho.MatchEchoLevel(log.WARN)
    
    fmt.Println(z, e)
    
    e, z = lecho.MatchZeroLevel(zerolog.INFO)

    fmt.Println(z, e)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MatchEchoLevel added in v2.4.0

func MatchEchoLevel(level log.Lvl) (zerolog.Level, log.Lvl)

func MatchZeroLevel added in v2.4.0

func MatchZeroLevel(level zerolog.Level) (log.Lvl, zerolog.Level)

func Middleware

func Middleware(config Config) echo.MiddlewareFunc

Types

type Config

type Config struct {
	Logger       *Logger
	Skipper      middleware.Skipper
	RequestIDKey string
}

type Context

type Context struct {
	echo.Context
	// contains filtered or unexported fields
}

func NewContext

func NewContext(ctx echo.Context, logger *Logger) *Context

func (*Context) Logger

func (c *Context) Logger() echo.Logger

type Logger

type Logger struct {
	// contains filtered or unexported fields
}

Logger is a wrapper around `zerolog.Logger` that provides an implementation of `echo.Logger` interface

func Ctx

func Ctx(ctx context.Context) *Logger

func From added in v2.1.0

func From(log zerolog.Logger, setters ...Setter) *Logger

From returns a new Logger instance using existing zerolog log.

func New

func New(out io.Writer, setters ...Setter) *Logger

New returns a new Logger instance

func (Logger) Debug

func (l Logger) Debug(i ...interface{})

func (Logger) Debugf

func (l Logger) Debugf(format string, i ...interface{})

func (Logger) Debugj

func (l Logger) Debugj(j log.JSON)

func (Logger) Error

func (l Logger) Error(i ...interface{})

func (Logger) Errorf

func (l Logger) Errorf(format string, i ...interface{})

func (Logger) Errorj

func (l Logger) Errorj(j log.JSON)

func (Logger) Fatal

func (l Logger) Fatal(i ...interface{})

func (Logger) Fatalf

func (l Logger) Fatalf(format string, i ...interface{})

func (Logger) Fatalj

func (l Logger) Fatalj(j log.JSON)

func (Logger) Info

func (l Logger) Info(i ...interface{})

func (Logger) Infof

func (l Logger) Infof(format string, i ...interface{})

func (Logger) Infoj

func (l Logger) Infoj(j log.JSON)

func (Logger) Level

func (l Logger) Level() log.Lvl

func (Logger) Output

func (l Logger) Output() io.Writer

func (Logger) Panic

func (l Logger) Panic(i ...interface{})

func (Logger) Panicf

func (l Logger) Panicf(format string, i ...interface{})

func (Logger) Panicj

func (l Logger) Panicj(j log.JSON)

func (Logger) Prefix

func (l Logger) Prefix() string

func (Logger) Print

func (l Logger) Print(i ...interface{})

func (Logger) Printf

func (l Logger) Printf(format string, i ...interface{})

func (Logger) Printj

func (l Logger) Printj(j log.JSON)

func (Logger) SetHeader

func (l Logger) SetHeader(h string)

func (*Logger) SetLevel

func (l *Logger) SetLevel(level log.Lvl)

func (*Logger) SetOutput

func (l *Logger) SetOutput(newOut io.Writer)

func (*Logger) SetPrefix

func (l *Logger) SetPrefix(newPrefix string)

func (*Logger) Unwrap added in v2.3.0

func (l *Logger) Unwrap() zerolog.Logger

func (Logger) Warn

func (l Logger) Warn(i ...interface{})

func (Logger) Warnf

func (l Logger) Warnf(format string, i ...interface{})

func (Logger) Warnj

func (l Logger) Warnj(j log.JSON)

func (*Logger) WithContext

func (l *Logger) WithContext(ctx context.Context) context.Context

type Options

type Options struct {
	// contains filtered or unexported fields
}

type Setter

type Setter func(opts *Options)

func WithCaller

func WithCaller() Setter

func WithCallerWithSkipFrameCount

func WithCallerWithSkipFrameCount(skipFrameCount int) Setter

func WithField

func WithField(name string, value interface{}) Setter

func WithFields

func WithFields(fields map[string]interface{}) Setter

func WithHook

func WithHook(hook zerolog.Hook) Setter

func WithHookFunc

func WithHookFunc(hook zerolog.HookFunc) Setter

func WithLevel

func WithLevel(level log.Lvl) Setter

func WithPrefix

func WithPrefix(prefix string) Setter

func WithTimestamp

func WithTimestamp() Setter

Jump to

Keyboard shortcuts

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