Documentation
¶
Overview ¶
Package log implements flexible but simple logging toolchain. You can use pre-instantiated logger and wrapper functions around it or create and customize your own.
For quick start use package-level functions like this:
package main
import (
"context"
"github.com/tomakado/logo/log"
)
func main() {
ctx := context.Background()
log.Verbose(ctx, "hello!")
log.Important(ctx, "hello, it's important")
log.VerboseX(ctx, "hello with extra!", log.Extra{"foo": "bar"})
log.Verbosef(ctx, "hello, %s", "Jon Snow")
log.Write(ctx, log.LevelImportant, "hello, it's me", Extra{"a": 42})
log.Writef(ctx, log.LevelVerbose, "My name is %s, I'm %d y.o.", "Ildar", 23)
}
For fine-tuned logger use NewLogger function:
package main
import (
"context"
"os"
"github.com/tomakado/logo/log"
)
func main() {
ctx := context.Background()
logger := log.NewLogger(log.LevelImportant, os.Stderr, log.SimpleTextFormatter)
logger.Verbose(ctx, "hello!") // will not be sent to output
logger.Important(ctx, "this is really important")
}
Index ¶
- Variables
- func Important(ctx context.Context, msg interface{})
- func ImportantX(ctx context.Context, msg interface{}, extra Extra)
- func Importantf(ctx context.Context, msg string, values ...interface{})
- func PostHook(h Hook)
- func PreHook(h Hook)
- func Verbose(ctx context.Context, msg interface{})
- func VerboseX(ctx context.Context, msg interface{}, extra Extra)
- func Verbosef(ctx context.Context, msg string, values ...interface{})
- func Write(ctx context.Context, level Level, msg interface{}, extra Extra)
- func Writef(ctx context.Context, level Level, msg string, values ...interface{})
- type Event
- type Extra
- type Formatter
- type Hook
- type JSONFormatter
- type Level
- type Logger
- func (l *Logger) Important(ctx context.Context, msg interface{})
- func (l *Logger) ImportantX(ctx context.Context, msg interface{}, extra Extra)
- func (l *Logger) Importantf(ctx context.Context, msg string, values ...interface{})
- func (l *Logger) PostHook(h Hook)
- func (l *Logger) PreHook(h Hook)
- func (l *Logger) Verbose(ctx context.Context, msg interface{})
- func (l *Logger) VerboseX(ctx context.Context, msg interface{}, extra Extra)
- func (l *Logger) Verbosef(ctx context.Context, msg string, values ...interface{})
- func (l *Logger) Write(ctx context.Context, level Level, msg interface{}, extra Extra)
- func (l *Logger) Writef(ctx context.Context, level Level, msg string, values ...interface{})
- type TemplateFormatter
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var DefaultLogger = NewLogger(LevelVerbose, os.Stderr, &JSONFormatter{})
DefaultLogger is a logger for quick start.
Functions ¶
func ImportantX ¶
ImportantX writes a message with important level and given extra.
func Importantf ¶
Importantf writes a formatted message with important level.
func PostHook ¶
func PostHook(h Hook)
PostHook registers given hook in logger to be executed after log event was written to output.
func PreHook ¶
func PreHook(h Hook)
PreHook registers given hook in logger to be executed before log event was written to output.
Types ¶
type Event ¶
type Event struct {
Time time.Time `json:"time"`
Level Level `json:"-"`
Message interface{} `json:"message"`
Extra Extra `json:"extra,omitempty"`
}
Event represents detailed log message. It's recommended to instantiate Event with NewEvent function.
type Extra ¶
type Extra map[string]interface{}
Extra is a set of key-value pairs (map in other words) used to extend the context of log event.
type JSONFormatter ¶
type JSONFormatter struct{}
JSONFormatter is used to output logs as JSON string.
func (JSONFormatter) Format ¶
func (f JSONFormatter) Format(event Event) string
Format converts given event to JSON string.
type Level ¶
type Level struct {
// contains filtered or unexported fields
}
Level represents logging level.
var ( LevelVerbose Level = NewLevel(10, "VERBOSE") LevelImportant Level = NewLevel(20, "IMPORTANT") )
Supported logging levels.
func NewLevel ¶
NewLevel creates a new instance of Level with given value and string representation.
func (Level) Gt ¶
Gt returns true if numeric representation of level is greater than numeric representation of given other level.
func (Level) Gte ¶
Gte returns true if numeric representation of level is greater than of equal to numeric representation of given other level.
type Logger ¶
type Logger struct {
// contains filtered or unexported fields
}
Logger ...
func (*Logger) ImportantX ¶
ImportantX writes a message with important level and given extra.
func (*Logger) Importantf ¶
Importantf writes a formatted message with important level.
func (*Logger) PostHook ¶
PostHook registers given hook in logger to be executed after log event was written to output.
func (*Logger) PreHook ¶
PreHook registers given hook in logger to be executed before log event was written to output.
type TemplateFormatter ¶
type TemplateFormatter struct {
// contains filtered or unexported fields
}
TemplateFormatter is used to output logs rendered with template.
Example ¶
package main
import (
"context"
"os"
"text/template"
"github.com/tomakado/logo/log"
)
func main() {
tmpl, err := template.New("tmpl_fmt_example").
Parse("level={{.Level}} msg=\"{{.Message}}\" extra={{.Extra}}")
if err != nil {
panic(err)
}
formatter := log.NewTemplateFormatter(tmpl)
logger := log.NewLogger(log.LevelVerbose, os.Stdout, formatter)
logger.Verbose(context.Background(), "hello")
}
Output: level=VERBOSE msg="hello" extra=map[]
var ( SimpleTextFormatter *TemplateFormatter TableTextFormatter *TemplateFormatter )
Formatters for quick start.
func NewTemplateFormatter ¶
func NewTemplateFormatter(tmpl *template.Template) *TemplateFormatter
NewTemplateFormatter creates a new instance of TemplateFormatter with given template.
func (TemplateFormatter) Format ¶
func (f TemplateFormatter) Format(event Event) string
Format renders event to string with template.