log

package
v0.4.3 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2020 License: ISC Imports: 7 Imported by: 0

README

log

This package provides structured logging for Go applications (it is a wrapper for go-kit logger).

Default output format is log.JSON and default log level is log.InfoLevel.

Quick Start

You can use the global/singelton logger as follows:

package main

import "github.com/moorara/observe/log"

func main() {
  log.SetOptions(log.Options{
    Name:        "service",
    Environment: "production",
    Region:      "us-east-1",
  })

  log.Infof("Hello, %s!", "World")
}

Output:

{"caller":"main.go:12","environment":"production","level":"info","logger":"service","message":"Hello, World!","region":"us-east-1","timestamp":"2019-09-20T03:17:57.743345Z"}

Or you can create a new instance logger as follows:

package main

import "github.com/moorara/observe/log"

func main() {
  logger := log.NewLogger(log.Options{
    Name:        "service",
    Environment: "production",
    Region:      "us-east-1",
    Level:       "debug",
    Format:      log.JSON,
  })

  logger = logger.With(
    "version", "0.1.0",
    "revision", "abcdef",
  )

  logger.DebugKV(
    "message", "Hello, World!",
    "requestId", "2222-bbbb",
  )
}

Output:

{"caller":"main.go:19","environment":"production","level":"debug","logger":"service","message":"Hello, World!","region":"us-east-1","requestId":"2222-bbbb","revision":"abcdef","timestamp":"2019-09-20T03:25:50.124195Z","version":"0.1.0"}

Documentation

Overview

Package log can be used for structured logging. It supports a singleton (global) logger as well as instantiating new loggers.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ContextWithLogger added in v0.2.3

func ContextWithLogger(ctx context.Context, logger *Logger) context.Context

ContextWithLogger returns a new context that holds a reference to the logger.

func Debug

func Debug(message string)

Debug logs a message in debug level using singleton logger.

func DebugKV added in v0.4.0

func DebugKV(kv ...interface{})

DebugKV logs key-value pairs in debug level using singleton logger.

func Debugf added in v0.4.0

func Debugf(format string, v ...interface{})

Debugf logs a message in debug level using singleton logger. It uses fmt.Sprintf() to log a message.

func Error

func Error(message string)

Error logs a message in error level using singleton logger.

func ErrorKV added in v0.4.0

func ErrorKV(kv ...interface{})

ErrorKV logs key-value pairs in error level using singleton logger.

func Errorf added in v0.4.0

func Errorf(format string, v ...interface{})

Errorf logs a message in error level using singleton logger. It uses fmt.Sprintf() to log a message.

func Info

func Info(message string)

Info logs a message in info level using singleton logger.

func InfoKV added in v0.4.0

func InfoKV(kv ...interface{})

InfoKV logs key-value pairs in info level using singleton logger.

func Infof added in v0.4.0

func Infof(format string, v ...interface{})

Infof logs a message in info level using singleton logger. It uses fmt.Sprintf() to log a message.

func SetLevel added in v0.3.3

func SetLevel(level string)

SetLevel changes the level of singleton logger.

func SetOptions

func SetOptions(opts Options)

SetOptions set optional options for singleton logger.

func Warn

func Warn(message string)

Warn logs a message in warn level using singleton logger.

func WarnKV added in v0.4.0

func WarnKV(kv ...interface{})

WarnKV logs key-value pairs in warn level using singleton logger.

func Warnf added in v0.4.0

func Warnf(format string, v ...interface{})

Warnf logs a message in warn level using singleton logger. It uses fmt.Sprintf() to log a message.

Types

type Format

type Format int

Format is the type for output format.

const (
	// JSON represents a json logger
	JSON Format = iota
	// Logfmt represents logfmt logger
	Logfmt
)

type Level

type Level int

Level is the type for logging level.

const (
	// NoneLevel log
	NoneLevel Level = iota
	// ErrorLevel log
	ErrorLevel
	// WarnLevel log
	WarnLevel
	// InfoLevel log
	InfoLevel
	// DebugLevel log
	DebugLevel
)

type Logger

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

Logger wraps a go-kit Logger.

func LoggerFromContext added in v0.2.3

func LoggerFromContext(ctx context.Context) *Logger

LoggerFromContext returns a logger set on a context. If no logger found on the context, the singleton logger will be returned.

func NewLogger

func NewLogger(opts Options) *Logger

NewLogger creates a new logger.

func NewVoidLogger added in v0.2.0

func NewVoidLogger() *Logger

NewVoidLogger creates a void logger for testing purposes.

func (*Logger) Debug

func (l *Logger) Debug(message string)

Debug logs a message in debug level.

func (*Logger) DebugKV added in v0.4.0

func (l *Logger) DebugKV(kv ...interface{})

DebugKV logs key-value pairs in debug level.

func (*Logger) Debugf added in v0.4.0

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

Debugf logs a message in debug level. It uses fmt.Sprintf() to log a message.

func (*Logger) Error

func (l *Logger) Error(message string)

Error logs a message pairs in error level.

func (*Logger) ErrorKV added in v0.4.0

func (l *Logger) ErrorKV(kv ...interface{})

ErrorKV logs key-value pairs in error level.

func (*Logger) Errorf added in v0.4.0

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

Errorf logs a message in error level. It uses fmt.Sprintf() to log a message.

func (*Logger) Info

func (l *Logger) Info(message string)

Info logs a message in info level.

func (*Logger) InfoKV added in v0.4.0

func (l *Logger) InfoKV(kv ...interface{})

InfoKV logs key-value pairs in info level.

func (*Logger) Infof added in v0.4.0

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

Infof logs a message in info level. It uses fmt.Sprintf() to log a message.

func (*Logger) SetLevel added in v0.3.3

func (l *Logger) SetLevel(level string)

SetLevel changes the level of logger.

func (*Logger) SetOptions added in v0.2.0

func (l *Logger) SetOptions(opts Options)

SetOptions resets a logger with new options.

func (*Logger) Warn

func (l *Logger) Warn(message string)

Warn logs a message pairs in warn level.

func (*Logger) WarnKV added in v0.4.0

func (l *Logger) WarnKV(kv ...interface{})

WarnKV logs key-value pairs in warn level.

func (*Logger) Warnf added in v0.4.0

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

Warnf logs a message in warn level. It uses fmt.Sprintf() to log a message.

func (*Logger) With

func (l *Logger) With(kv ...interface{}) *Logger

With returns a new logger that always logs a set of key-value pairs (context).

type Options

type Options struct {
	Name        string
	Environment string
	Region      string
	Level       string
	Format      Format
	Writer      io.Writer
	// contains filtered or unexported fields
}

Options contains optional options for Logger.

Jump to

Keyboard shortcuts

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