Documentation ¶
Overview ¶
Package log implements a simple structured logging API designed with few assumptions. Designed for centralized logging solutions such as Kinesis which require encoding and decoding before fanning-out to handlers.
You may use this package with inline handlers, much like Logrus, however a centralized solution is recommended so that apps do not need to be re-deployed to add or remove logging service providers.
Package text implements a development-friendly textual handler.
Example (Errors) ¶
Errors are passed to WithError(), populating the "error" field.
err := errors.New("boom") log.WithError(err).Error("upload failed")
Output:
Example (MultipleFields) ¶
Multiple fields can be set, via chaining, or WithFields().
log.WithFields(log.Fields{ "user": "Tobi", "file": "sloth.png", "type": "image/png", }).Info("upload")
Output:
Example (Structured) ¶
Structured logging is supported with fields, and is recommended over the formatted message variants.
log.WithField("user", "Tobo").Info("logged in")
Output:
Example (Trace) ¶
Trace can be used to simplify logging of start and completion events, for example an upload which may fail.
defer log.Trace("upload").Stop(&err) return nil
Output:
Example (Unstructured) ¶
Unstructured logging is supported, but not recommended since it is hard to query.
log.Infof("%s logged in", "Tobi")
Output:
Index ¶
- Variables
- func Debug(v ...interface{})
- func Debugf(msg string, v ...interface{})
- func Error(v ...interface{})
- func Errorf(msg string, v ...interface{})
- func Fatal(v ...interface{})
- func Fatalf(msg string, v ...interface{})
- func Info(v ...interface{})
- func Infof(msg string, v ...interface{})
- func Printf(msg string, v ...interface{})
- func Println(v ...interface{})
- func SetHandler(h Handler)
- func SetLevel(l Level)
- func Warn(v ...interface{})
- func Warnf(msg string, v ...interface{})
- type Entry
- func (e *Entry) Debug(v ...interface{})
- func (e *Entry) Debugf(msg string, v ...interface{})
- func (e *Entry) Error(v ...interface{})
- func (e *Entry) Errorf(msg string, v ...interface{})
- func (e *Entry) Fatal(v ...interface{})
- func (e *Entry) Fatalf(msg string, v ...interface{})
- func (e *Entry) Info(v ...interface{})
- func (e *Entry) Infof(msg string, v ...interface{})
- func (e *Entry) Printf(msg string, v ...interface{})
- func (e *Entry) Println(v ...interface{})
- func (e *Entry) Stop(err *error)
- func (e *Entry) Trace(msg string) *Entry
- func (e *Entry) Warn(v ...interface{})
- func (e *Entry) Warnf(msg string, v ...interface{})
- func (e *Entry) WithError(err error) *Entry
- func (e *Entry) WithField(key string, value interface{}) *Entry
- func (e *Entry) WithFields(fields Fielder) *Entry
- func (e *Entry) WithMemStats() *Entry
- type Fielder
- type Fields
- type Fn
- type Handler
- type HandlerFunc
- type Interface
- type Level
- type Logger
- func (l *Logger) Debug(v ...interface{})
- func (l *Logger) Debugf(msg string, v ...interface{})
- func (l *Logger) Error(v ...interface{})
- func (l *Logger) Errorf(msg string, v ...interface{})
- func (l *Logger) Fatal(v ...interface{})
- func (l *Logger) Fatalf(msg string, v ...interface{})
- func (l *Logger) Info(v ...interface{})
- func (l *Logger) Infof(msg string, v ...interface{})
- func (l *Logger) Printf(msg string, v ...interface{})
- func (l *Logger) Println(v ...interface{})
- func (l *Logger) Trace(msg string) *Entry
- func (l *Logger) Warn(v ...interface{})
- func (l *Logger) Warnf(msg string, v ...interface{})
- func (l *Logger) WithError(err error) *Entry
- func (l *Logger) WithField(key string, value interface{}) *Entry
- func (l *Logger) WithFields(fields Fielder) *Entry
- func (l *Logger) WithMemStats() *Entry
- type SimpleHandler
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var Strings = [...]string{
DebugLevel: "DEBUG",
InfoLevel: "INFO",
WarnLevel: "WARN",
ErrorLevel: "ERROR",
FatalLevel: "FATAL",
}
Strings mapping.
Functions ¶
Types ¶
type Entry ¶
type Entry struct { Logger *Logger `json:"-"` Fields Fields `json:"fields"` Level Level `json:"level"` Timestamp time.Time `json:"timestamp"` Message string `json:"message"` // contains filtered or unexported fields }
Entry represents a single log entry.
func Trace ¶
Trace returns a new entry with a Stop method to fire off a corresponding completion log, useful with defer.
func WithFields ¶
WithFields returns a new entry with `fields` set.
func WithMemStats ¶
func WithMemStats() *Entry
WithError returns a new entry with the "error" set to `err`.
func (*Entry) Fatal ¶
func (e *Entry) Fatal(v ...interface{})
Fatal level message, followed by an exit.
func (*Entry) Stop ¶
Stop should be used with Trace, to fire off the completion message. When an `err` is passed the "error" field is set, and the log level is error.
func (*Entry) Trace ¶
Trace returns a new entry with a Stop method to fire off a corresponding completion log, useful with defer.
func (*Entry) WithFields ¶
WithFields returns a new entry with `fields` set.
func (*Entry) WithMemStats ¶
type Fielder ¶
type Fielder interface {
Fields() Fields
}
Fielder is an interface for providing fields to custom types.
type Fields ¶
type Fields map[string]interface{}
Fields represents a map of entry level data used for structured logging.
type Fn ¶
type Fn func() interface{}
Any values that are dynamically determined at log time using a function call should be cast to this type.
type Handler ¶
Handler is used to handle log events, outputting them to stdio or sending them to remote services. See the "handlers" directory for implementations.
It is left up to Handlers to implement thread-safety.
type HandlerFunc ¶
The HandlerFunc type is an adapter to allow the use of ordinary functions as log handlers. If f is a function with the appropriate signature, HandlerFunc(f) is a Handler object that calls f.
type Interface ¶
type Interface interface { WithFields(fields Fielder) *Entry WithField(key string, value interface{}) *Entry WithError(err error) *Entry WithMemStats() *Entry Debug(v ...interface{}) Info(v ...interface{}) Warn(v ...interface{}) Error(v ...interface{}) Fatal(v ...interface{}) Println(v ...interface{}) Debugf(msg string, v ...interface{}) Infof(msg string, v ...interface{}) Warnf(msg string, v ...interface{}) Errorf(msg string, v ...interface{}) Fatalf(msg string, v ...interface{}) Printf(msg string, v ...interface{}) Trace(msg string) *Entry }
Interface represents the API of both Logger and Entry.
type Level ¶
type Level int
Level of severity.
func (Level) MarshalJSON ¶
MarshalJSON returns the level string.
type Logger ¶
Logger represents a logger with configurable Level and Handler.
func (*Logger) Fatal ¶
func (l *Logger) Fatal(v ...interface{})
Fatal level message, followed by an exit.
func (*Logger) Trace ¶
Trace returns a new entry with a Stop method to fire off a corresponding completion log, useful with defer.
func (*Logger) WithFields ¶
WithFields returns a new entry with `fields` set.
func (*Logger) WithMemStats ¶
type SimpleHandler ¶
Handler implementation.
func (*SimpleHandler) HandleLog ¶
func (h *SimpleHandler) HandleLog(e *Entry) error
HandleLog implements log.Handler.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
_examples
|
|
handlers
|
|
cli
Package cli implements a colored text handler suitable for command-line interfaces.
|
Package cli implements a colored text handler suitable for command-line interfaces. |
cli2
Package cli2 implements a colored text handler suitable for command-line interfaces.
|
Package cli2 implements a colored text handler suitable for command-line interfaces. |
discard
Package discard implements a no-op handler useful for benchmarks and tests.
|
Package discard implements a no-op handler useful for benchmarks and tests. |
es
Package es implements an Elasticsearch batch handler.
|
Package es implements an Elasticsearch batch handler. |
json
Package json implements a JSON handler.
|
Package json implements a JSON handler. |
logfmt
Package logfmt implements a "logfmt" format handler.
|
Package logfmt implements a "logfmt" format handler. |
memory
Package memory implements an in-memory handler useful for testing, as the entries can be accessed after writes.
|
Package memory implements an in-memory handler useful for testing, as the entries can be accessed after writes. |
multi
Package multi implements a handler which invokes a number of handlers.
|
Package multi implements a handler which invokes a number of handlers. |
text
Package text implements a development-friendly textual handler.
|
Package text implements a development-friendly textual handler. |