logger

package module
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Aug 25, 2022 License: MIT Imports: 4 Imported by: 96

README

Package logger v1.2.0

This package will provide you a generic way to handle logging.

Configuration

This plugin will configure himself automatically using the following environment variables:

  • LOGGER_TYPE: define the logger output type (values: json, text) (default: text)
  • LOGGER_LEVEL: define the minimum output level of the logger (values: panic, fatal, warn, info, debug) (default: info)

Usage

log := logger.Default() // Return a default logger

Context

The logger can be passed in a context so it can retain fields.

func main() {
  log := logger.Default().WithFields(logrus.Fields{"caller": "main"})
  add(logger.ToCtx(context.Background(), log), 1, 2)
}

def add(ctx context.Context, a, b int) int {
  log := logger.Get(ctx)
  log.Info("Starting add operation")

  log.WithField("operation", "add")
  do(logger.ToCtx(ctx, log), a,b, func(a,b int)int{return a+b})
}

def do(ctx context.Context, a,b int, op fun(int, int)int) {
  log := logger.Get(ctx)
  log.Info("Doing operation")
  op(a,b)
}

2017-08-27 11:10:10 [INFO] Starting add operation caller=main
2017-08-27 11:10:10 [INFO] Do operation caller=main operation=add

Plugins

This logger accept plugins which can register hooks on the logger.

Known plugins

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddLoggerToContext

func AddLoggerToContext(ctx context.Context) context.Context

AddLoggerToContext add the Default() logger on top of the current context

func Default

func Default(opts ...Opt) logrus.FieldLogger

Default generate a logrus logger with the configuration defined in the environment and the hooks used in the plugins

func Get

Get return the logger stored in the context or create a new one if the logger is not set

func NewContextWithLogger

func NewContextWithLogger() context.Context

NewContextWithLogger generate a new context (based on context.Background()) and add a Default() logger on top of it

func ToCtx

func ToCtx(ctx context.Context, logger logrus.FieldLogger) context.Context

ToCtx add a logger to a context

func WithFieldToCtx added in v1.2.0

func WithFieldToCtx(ctx context.Context, key string, value interface{}) (context.Context, logrus.FieldLogger)

WithFieldToCtx adds the field to the logger and adds the logger to the context

func WithFieldsToCtx added in v1.2.0

func WithFieldsToCtx(ctx context.Context, fields logrus.Fields) (context.Context, logrus.FieldLogger)

WithFieldsToCtx adds fields to the logger and adds the logger back to the context

Types

type Opt

type Opt func(*logrus.Logger)

Opt is a function-option type for the Default() method.

func WithHooks

func WithHooks(hooks []logrus.Hook) Opt

func WithLogFormatter

func WithLogFormatter(f logrus.Formatter) Opt

func WithLogLevel

func WithLogLevel(lvl logrus.Level) Opt

WithLogLevel let us define the level of verbosity of the logger

type Plugin

type Plugin interface {
	Name() string              // Return the name of the plugin. This name must be unique for each plugin
	Hook() (bool, logrus.Hook) // Return a boolean and a hook. If the boolean is set to true, the hook will be added to the logger, otherwise the hook will be ignored
}

Plugin is the interface that a Plugin need to implement to be compatible with the logger library

type PluginManager

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

func Plugins

func Plugins() *PluginManager

Plugins is the entrypoint to the global PluginManager

func (*PluginManager) Hooks

func (m *PluginManager) Hooks() []logrus.Hook

Hooks return all the hooks generated by the plugins

func (*PluginManager) RegisterPlugin

func (m *PluginManager) RegisterPlugin(plugin Plugin)

RegisterPlugin add a plugin to the current plugin list, if the plugin is already in memory, he will skip the add part

Directories

Path Synopsis
plugins

Jump to

Keyboard shortcuts

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