Skip to content
/ cog Public

Structured key-value logger without breaking order of fields. 🔧

License

Notifications You must be signed in to change notification settings

reconquest/cog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Structured key-value logger without breaking order of fields. 🔧

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages