- Notifications
You must be signed in to change notification settings - Fork1
Structured key-value logger without breaking order of fields. 🔧
License
NotificationsYou must be signed in to change notification settings
reconquest/cog
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Package provides to structured log both for displaying it sanely in the stderrlogs as well as sending key-valued logs into any log storage such as ElasticSearch.
To setup basic stderr logging, use following snippet in yourmain.go
:
import"github.com/reconquest/cog"// ...stderr:=lorg.NewLog()stderr.SetIndentLines(true)stderr.SetFormat(lorg.NewFormat("${time} ${level:[%s]:right:short} ${prefix}%s"),)ifargs["--debug"].(bool) {stderr.SetLevel(lorg.LevelDebug)}log=cog.NewLogger(stderr)// use like thatlog.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 usekarma
for structured logging and errorreporting, considerlooking at tests and examples.
Following package offers significant improvements abovelogrus
and similarstructured 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-stacklevels 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.
This project is licensed under the terms of the MIT license.