logrus4logr

package module
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Feb 12, 2020 License: MIT Imports: 5 Imported by: 0

README

logrus4logr

GoDoc

Provides adapters for using Logrus hooks and formatters with Logr.

While Logrus hooks and formatters can easily be modified to work directly with Logr, these adapters are provided for convenience.

Hooks

A Logrus hook can be adapted to a Logr target. The example below uses LFSHook. More examples can be found here.

package main
import (
  "github.com/rifflock/lfshook"
  "github.com/sirupsen/logrus"
  "github.com/wiggin77/logr"
  "github.com/wiggin77/logrus4logr"
)

func main() {
  var lgr = &logr.Logr{}

  // create a Local File System Hook (LFSHook)
  pathMap := lfshook.PathMap{
    logrus.InfoLevel:  "./info.log",
    logrus.WarnLevel:  "./warn.log",
    logrus.ErrorLevel: "./error.log",
  }
  lfsHook := lfshook.NewHook(pathMap, &logrus.JSONFormatter{})

  // log severity Info or higher.
  filter := &logr.StdFilter{Lvl: logr.Info}

  // create adapter wrapping lfshook.
  target := logrus4logr.NewAdapterTarget(filter, nil, lfsHook, 1000)
  lgr.AddTarget(target)

  // log stuff!
  logger := lgr.NewLogger().WithField("status", "woot!")

  logger.Info("I'm hooked on Logr")
  logger.WithField("code", 501).Error("Request failed")

  lgr.Shutdown()
}

Formatters

A Logrus formatter can be used by Logr via an adapter. The example below uses Logrus' built-in TextFormatter. More examples can be found here.

package main
import (
  "github.com/sirupsen/logrus"
  "github.com/wiggin77/logr"
  "github.com/wiggin77/logrus4logr"
)

func main() {
  var lgr = &logr.Logr{}

  // create a Logrus TextFormatter with whatever settings you prefer.
  logrusFormatter := &logrus.TextFormatter{
    // settings...
  }

  // log severity Info or higher.
  filter := &logr.StdFilter{Lvl: logr.Info}

  // wrap TextFormatter in Logr adapter.
  formatter := &logrus4logr.FAdapter{Fmtr: logrusFormatter}

  // create writer target to stdout using adapter.
  var t logr.Target
  t = target.NewWriterTarget(filter, formatter, os.Stdout, 1000)
  lgr.AddTarget(t)

  // log stuff!
  logger := lgr.NewLogger().WithField("status", "woot!")

  logger.Info("I'm hooked on Logr")
  logger.WithField("code", 501).Error("Request failed")

  lgr.Shutdown()
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FAdapter

type FAdapter struct {
	// Fmtr is the Logrus formatter to wrap.
	Fmtr logrus.Formatter

	// Logger is an optional logrus.Logger instance to use instead of the default.
	Logger *logrus.Logger
	// contains filtered or unexported fields
}

FAdapter wraps a Logrus formatter so it can be used as a Logr formatter.

func (*FAdapter) Format

func (a *FAdapter) Format(rec *logr.LogRec, stacktrace bool, buf *bytes.Buffer) (*bytes.Buffer, error)

Format converts a log record to bytes using a Logrus formatter.

type TAdapter

type TAdapter struct {
	logr.Basic

	// Logger is an optional logrus.Logger instance to use instead of the default.
	Logger *logrus.Logger
	// contains filtered or unexported fields
}

TAdapter wraps a Logrus hook allowing the hook be used as a Logr target. Create instances with `NewAdapterTarget`.

func NewAdapterTarget

func NewAdapterTarget(filter logr.Filter, formatter logr.Formatter, hook logrus.Hook, maxQueue int) *TAdapter

NewAdapterTarget creates a target wrapper for a Logrus hook. If filter and/or formatter are nil then defaults will be used (Panic level; Plain formatter).

func (*TAdapter) String

func (a *TAdapter) String() string

String returns the type name of the Logrus hook.

func (*TAdapter) Write

func (a *TAdapter) Write(rec *logr.LogRec) error

Write converts a log record to a Logrus entry and passes it to the Logrus hook.

Jump to

Keyboard shortcuts

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