Documentation ¶
Overview ¶
Package log implements a std log compatible logging system that draws some inspiration from the Python standard library [logging module](https://docs.python.org/3/library/logging.html). It supports multiple handlers, log levels, zero-allocation, scopes, custom formatting, and environment and runtime configuration.
When not used to replace std log, the import should use the package name "analog" as in:
import analog "github.com/anacrolix/log".
Index ¶
- Variables
- func ContextWithLogger(ctx context.Context, logger Logger) context.Context
- func Levelf(level Level, format string, a ...interface{})
- func LineFormatter(msg Record) []byte
- func Print(a ...interface{})
- func Printf(format string, a ...interface{})
- func Println(a ...interface{})
- type ByteFormatter
- type Handler
- type Level
- type Logger
- func (l Logger) FilterLevel(minLevel Level) Logger
- func (l Logger) IsEnabledFor(level Level) bool
- func (l Logger) IsZero() bool
- func (l Logger) LazyLog(level Level, f func() Msg)
- func (l Logger) LazyLogDefaultLevel(f func() Msg)
- func (l Logger) Levelf(level Level, format string, a ...interface{})
- func (l Logger) Log(m Msg)
- func (l Logger) LogLevel(level Level, m Msg)
- func (l Logger) Print(v ...interface{})
- func (l Logger) Printf(format string, a ...interface{})
- func (l Logger) Println(a ...interface{})
- func (l Logger) SkipCallers(skip int) Logger
- func (l Logger) WithContextText(s string) Logger
- func (l Logger) WithContextValue(v interface{}) Logger
- func (l Logger) WithDefaultLevel(level Level) Logger
- func (l Logger) WithMap(f func(m Msg) Msg) Logger
- func (l Logger) WithNames(names ...string) Logger
- func (l Logger) WithText(f func(Msg) string) Logger
- func (l Logger) WithValues(v ...interface{}) Logger
- type Msg
- func (m Msg) Add(key, value interface{}) Msg
- func (m Msg) AddValue(v interface{}) Msg
- func (m Msg) AddValues(v ...interface{}) Msg
- func (m Msg) HasValue(v interface{}) (has bool)
- func (m Msg) Log(l Logger) Msg
- func (m Msg) LogLevel(level Level, l Logger) Msg
- func (m Msg) Skip(skip int) Msg
- func (me Msg) String() string
- func (m Msg) With(key, value interface{}) Msg
- func (m Msg) WithText(f func(Msg) string) Msg
- func (m Msg) WithValues(v ...interface{}) Msg
- type MsgImpl
- type Record
- type Rule
- type StreamHandler
Constants ¶
This section is empty.
Variables ¶
var ( DefaultHandler = StreamHandler{ W: os.Stderr, Fmt: LineFormatter, } Default Logger // Inited after GO_LOG is parsed. DiscardHandler = StreamHandler{ W: ioutil.Discard, Fmt: func(Record) []byte { return nil }, } )
var ( Never = Level{-1} // A message at this level should never be logged. NotSet = Level{0} Debug = Level{1} Info = Level{2} Warning = Level{3} Error = Level{4} Critical = Level{5} )
Deprecated: Logging shouldn't include control flow.
var Fstr = Fmsg
Functions ¶
func ContextWithLogger ¶ added in v0.13.0
func LineFormatter ¶
Types ¶
type ByteFormatter ¶
type Level ¶
type Level struct {
// contains filtered or unexported fields
}
func (*Level) UnmarshalText ¶ added in v0.12.0
type Logger ¶
type Logger struct {
// contains filtered or unexported fields
}
Logger handles logging in a specific context. It includes a bunch of helpers and compatibility over the loggerCore.
func ContextLogger ¶ added in v0.13.0
func (Logger) FilterLevel ¶
func (Logger) IsEnabledFor ¶ added in v0.11.0
func (Logger) LazyLogDefaultLevel ¶ added in v0.11.0
func (l Logger) LazyLogDefaultLevel(f func() Msg)
func (Logger) Print ¶
func (l Logger) Print(v ...interface{})
Helper for compatibility with "log".Logger.
func (Logger) SkipCallers ¶ added in v0.10.0
func (Logger) WithContextText ¶ added in v0.8.0
func (Logger) WithContextValue ¶ added in v0.8.0
func (Logger) WithDefaultLevel ¶
func (Logger) WithMap ¶
Returns a logger that for a given message propagates the result of `f` instead.
func (Logger) WithValues ¶
func (l Logger) WithValues(v ...interface{}) Logger
Returns a logger that adds the given values to logged messages.
type Msg ¶
type Msg struct {
MsgImpl
}
func (Msg) WithValues ¶
TODO: What ordering should be applied to the values here, per MsgImpl.Values. For now they're traversed in order of the slice.
type MsgImpl ¶
type MsgImpl interface { // Returns the message text. Allows for lazy evaluation/prefixing etc. Text() string // Sets the program counters in pc. Having it in the interface may allow us to cache/freeze them // for serialization etc. Callers(skip int, pc []uintptr) int // Iterates over the values as added LIFO. Values(callback valueIterCallback) }
The minimal interface required for the Msg helper/wrapper to operate on.
type StreamHandler ¶ added in v0.11.0
type StreamHandler struct { W io.Writer Fmt ByteFormatter }
func (StreamHandler) Handle ¶ added in v0.11.0
func (me StreamHandler) Handle(r Record)