cog

package module
v0.0.0-...-c7ba12d Latest Latest
Warning

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

Go to latest
Published: Aug 30, 2024 License: Apache-2.0 Imports: 5 Imported by: 13

README

cog

Package provides to structured log both for displaying it sanely in the stderr logs as well as sending key-valued logs into any log storage such as ElasticSearch.

To setup basic stderr logging, use following snippet in your main.go:

import "github.com/reconquest/cog"

// ...

stderr := lorg.NewLog()
stderr.SetIndentLines(true)
stderr.SetFormat(
    lorg.NewFormat("${time} ${level:[%s]:right:short} ${prefix}%s"),
)

if args["--debug"].(bool) {
    stderr.SetLevel(lorg.LevelDebug)
}

log = cog.NewLogger(stderr)

// use like that
log.Infof(nil, "message to log: %d", 1)
log.Infof(karma.Describe("key", "value"), "message to log: %d", 1)

err := errors.New("some error")
log.Fatalf(
    karma.Describe("context", "testing error").Reason(err),
    "message to log: %d",
    1,
)

To see more examples of how to use karma for structured logging and error reporting, consider looking at tests and examples.

Motivation

Following package offers significant improvements above logrus and similar structured loggers:

  • Readable tree-like log entries in stderr, which makes easy to debug program, because log is more readable.
  • Allows to use context errors, that used to describe errors on all call-stack levels to ease finding problems and fixing them.
  • Sends logs to ES in key-value format like other structured loggers.
  • Does not change ordering of key-values in the context.

License

This project is licensed under the terms of the MIT license.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Display

func Display(logger *Logger, level lorg.Level, hierarchy karma.Hierarchical)

Types

type Displayer

type Displayer func(lorg.Level, karma.Hierarchical)

type Exiter

type Exiter func(int)

type Logger

type Logger struct {
	*lorg.Log
	// contains filtered or unexported fields
}

Logger provides structured logging methods, based on karma package.

func NewLogger

func NewLogger(output *lorg.Log) *Logger

func (*Logger) Debug

func (logger *Logger) Debug(
	args ...interface{},
)

func (*Logger) Debugf

func (logger *Logger) Debugf(
	context *karma.Context,
	message string,
	args ...interface{},
)

func (*Logger) Display

func (logger *Logger) Display(level lorg.Level, hierarchy karma.Hierarchical)

func (*Logger) Error

func (logger *Logger) Error(
	args ...interface{},
)

func (*Logger) Errorf

func (logger *Logger) Errorf(
	err error,
	message string,
	args ...interface{},
)

func (*Logger) Fatal

func (logger *Logger) Fatal(
	args ...interface{},
)

func (*Logger) Fatalf

func (logger *Logger) Fatalf(
	err error,
	message string,
	args ...interface{},
)

func (*Logger) Info

func (logger *Logger) Info(
	args ...interface{},
)

func (*Logger) Infof

func (logger *Logger) Infof(
	context *karma.Context,
	message string,
	args ...interface{},
)

func (*Logger) NewChild

func (logger *Logger) NewChild() *Logger

func (*Logger) NewChildWithPrefix

func (logger *Logger) NewChildWithPrefix(prefix string) *Logger

func (*Logger) Send

func (logger *Logger) Send(
	level lorg.Level,
	hierarchy karma.Hierarchical,
) error

func (*Logger) SetDisplayer

func (logger *Logger) SetDisplayer(display Displayer)

SetDisplayer sets given function as callack when displays log line

func (*Logger) SetExiter

func (logger *Logger) SetExiter(exiter func(int))

func (*Logger) SetSender

func (logger *Logger) SetSender(sender Sender)

SetSender sets given function as callack for every log line

func (*Logger) Trace

func (logger *Logger) Trace(
	args ...interface{},
)

func (*Logger) TraceJSON

func (logger *Logger) TraceJSON(obj interface{}) (encoded string)

func (*Logger) Tracef

func (logger *Logger) Tracef(
	context *karma.Context,
	message string,
	args ...interface{},
)

func (*Logger) Warning

func (logger *Logger) Warning(
	args ...interface{},
)

func (*Logger) Warningf

func (logger *Logger) Warningf(
	err error,
	message string,
	args ...interface{},
)

func (*Logger) Write

func (logger *Logger) Write(
	level lorg.Level,
	reason interface{},
	message string,
	args ...interface{},
)

type Sender

type Sender func(lorg.Level, karma.Hierarchical) error

Jump to

Keyboard shortcuts

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