golog

package module
v0.0.0-...-63d110b Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2022 License: MIT Imports: 12 Imported by: 0

README

golog

A simple logger for go.

Install

go get github.com/kibaamor/golog

Example

example.go

// basic logger
logger := golog.NewTermLogger(os.Stderr, true)

// got: `[INFO] 1:1 k1:v1 k2:[1 1]`
logger.Log(golog.LevelInfo, 1, 1, "k1", "v1", "k2", []int{1, 1})

// combine multiple logger
// Discard is logger with discard everything
logger = golog.MultiLogger(logger, golog.Discard)

// got: `[INFO] 1:1 k1:v1 k2:[1 1]`
logger.Log(golog.LevelInfo, 1, 1, "k1", "v1", "k2", []int{1, 1})

// filter with log level
logger = golog.WithFilter(logger, golog.FilterLevel(golog.LevelWarn))
// got: ``
logger.Log(golog.LevelInfo, 1, 1)

// auto add timestamp and caller information
logger = golog.WithHandler(logger, golog.HandlerDefaultTimestamp, golog.HandlerDefaultCaller)

// got:`[2022-10-28T16:37:50.786+08:00][example.go:33][WARN] 1:1`
logger.Log(golog.LevelWarn, 1, 1)

// Helper provides useful apis, such as Info, Infow.
helper := golog.NewHelper(logger)

// got: `[2022-10-28T16:37:50.786+08:00][example.go:39][ERROR] golog: hi`
helper.Errorf("golog: %v", "hi")

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// DefaultTimestampKeyName is default log key for timestamp.
	DefaultTimestampKeyName = "ts"
	// DefaultTimestampFormat is default format for timestamp.
	DefaultTimestampFormat = "2006-01-02T15:04:05.000Z07:00"
	// DefaultTimestampNowFunc is default function for get current timestamp.
	DefaultTimestampNowFunc = time.Now
	// DefaultCallerKeyName is default log key for caller information.
	DefaultCallerKeyName = "caller"
	// DefaultCallerDepth is default depth to skip while get stack information.
	DefaultCallerDepth = 2
	// DefaultCallerWithFullPath control whether if recording the full path of log source file.
	DefaultCallerWithFullPath = false

	// HandlerDefaultTimestamp is default timestamp handler with default settings.
	HandlerDefaultTimestamp = HandlerTimestamp(DefaultTimestampKeyName, DefaultTimestampFormat, DefaultTimestampNowFunc)
	// HandlerDefaultCaller is default caller handler with default settings.
	HandlerDefaultCaller = HandlerCaller(DefaultCallerKeyName, DefaultCallerDepth, DefaultCallerWithFullPath)
)
View Source
var (
	// DefaultMsgKey is default message key for logging.
	DefaultMsgKey = "msg"

	// DefaultMsgContext is default message Context for logging.
	DefaultMsgContext = context.Background()
)

Functions

This section is empty.

Types

type Filter

type Filter func(level Level, kvs []interface{}) bool

Filter discard log with condition.

func FilterLevel

func FilterLevel(l Level) Filter

FilterLevel filter log level less than specific level.

type Handler

type Handler func(level Level, kvs []interface{}) []interface{}

Handler modify log with anything.

func HandlerCaller

func HandlerCaller(keyName string, depth int, withFullPath bool) Handler

HandlerCaller append caller information into log.

func HandlerTimestamp

func HandlerTimestamp(keyName, valueFormat string, nowFunc func() time.Time) Handler

HandlerTimestamp append timestamp information into log.

type Helper

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

Helper is a logger helper.

func NewHelper

func NewHelper(logger Logger, opts ...Option) *Helper

NewHelper new a logger helper.

func (*Helper) Debug

func (h *Helper) Debug(a ...interface{})

Debug logs a message at debug level.

func (*Helper) Debugf

func (h *Helper) Debugf(format string, a ...interface{})

Debugf logs a message at debug level.

func (*Helper) Error

func (h *Helper) Error(a ...interface{})

Error logs a message at error level.

func (*Helper) Errorf

func (h *Helper) Errorf(format string, a ...interface{})

Errorf logs a message at error level.

func (*Helper) Fatal

func (h *Helper) Fatal(a ...interface{})

Fatal logs a message at fatal level.

func (*Helper) Fatalf

func (h *Helper) Fatalf(format string, a ...interface{})

Fatalf logs a message at fatal level.

func (*Helper) Info

func (h *Helper) Info(a ...interface{})

Info logs a message at info level.

func (*Helper) Infof

func (h *Helper) Infof(format string, a ...interface{})

Infof logs a message at info level.

func (*Helper) Log

func (h *Helper) Log(level Level, kvs ...interface{})

Log log a message.

func (*Helper) Logger

func (h *Helper) Logger() Logger

Logger get inner logger.

func (*Helper) Warn

func (h *Helper) Warn(a ...interface{})

Warn logs a message at warn level.

func (*Helper) Warnf

func (h *Helper) Warnf(format string, a ...interface{})

Warnf logs a message at warnf level.

func (*Helper) WithKey

func (h *Helper) WithKey(key string) *Helper

WithKey create a logger helper with new message key from an exist Helper.

type Level

type Level int8

Level is log level.

const (
	LevelDebug Level = iota - 1
	LevelInfo
	LevelWarn
	LevelError
	LevelFatal
)

func ParseLevel

func ParseLevel(s string) Level

ParseLevel parsing log level from string.

func (Level) String

func (l Level) String() string

String convert log level to string.

type Logger

type Logger interface {
	Log(level Level, kvs ...interface{})
}

Logger is a logger interface.

var Discard Logger = discard{}

Discard is a Logger on which all Log calls succeed without doing anything.

func MultiLogger

func MultiLogger(loggers ...Logger) Logger

MultiLogger creates a logger that duplicates its logs to all the provided loggers, similar to the Unix tee(1) command.

Each log is logged to each listed logger, one at a time. If a listed logger returns an error, that overall log operation stops and returns the error; it does not continue down the list.

func NewStdLogger

func NewStdLogger(w io.Writer) Logger

NewStdLogger new a standard logger with writer.

func NewTermLogger

func NewTermLogger(w io.Writer, colorful bool) Logger

NewTermLogger new an optimized logger for terminal with writer.

func WithFilter

func WithFilter(logger Logger, filter ...Filter) Logger

WithFilter decorate logger with filters

func WithHandler

func WithHandler(logger Logger, handler ...Handler) Logger

WithHandler decorate logger with handlers

type Option

type Option func(h *Helper)

Option is Helper option.

func MessageKey

func MessageKey(key string) Option

MessageKey set default log message key.

type WriteFunc

type WriteFunc func(w io.Writer, a ...interface{})

WriteFunc is log writer function.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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