# README
log15

Package log15 provides an opinionated, simple toolkit for best-practice logging in Go (golang) that is both human and machine readable. It is modeled after the Go standard library's io
and net/http
packages and is an alternative to the standard library's log
package.
Features
- A simple, easy-to-understand API
- Promotes structured logging by encouraging use of key/value pairs
- Side loggers which inherit and add their own private context
- Lazy evaluation of expensive operations
- Simple Handler interface allowing for construction of flexible, custom logging configurations with a tiny API.
- Color terminal support
- Built-in support for logging to files, streams, syslog, and the network
- Support for forking records to multiple handlers, buffering records for output, failing over from failed handler writes, + more
Versioning
The API of the master branch of log15 should always be considered unstable. If you want to rely on a stable API, you must vendor the library.
Importing
import log "github.com/inconshreveable/log15"
Examples
srvlog := log.New("module", "app/server")
srvlog.Warn("abnormal conn rate", "rate", curRate, "low", lowRate, "high", highRate)
connlog := srvlog.New("raddr", c.RemoteAddr())
connlog.Info("connection open")
connlog.Debug("ping remote", "latency", log.Lazy{pingRemote})
srvlog.SetHandler(log.MultiHandler(
log.StreamHandler(os.Stderr, log.LogfmtFormat()),
log.LvlFilterHandler(
log.LvlError,
log.Must.FileHandler("errors.json", log.JSONFormat()))))
Will result in output that looks like this:
WARN[06-17|21:58:10] abnormal conn rate module=app/server rate=0.500 low=0.100 high=0.800
INFO[06-17|21:58:10] connection open module=app/server raddr=10.0.0.1
Breaking API Changes
The following commits broke API stability. This reference is intended to help you understand the consequences of updating to a newer version of log15.
- 57a084d014d4150152b19e4e531399a7145d1540 - Added a
Get()
method to theLogger
interface to retrieve the current handler - 93404652ee366648fa622b64d1e2b67d75a3094a -
Record
fieldCall
changed tostack.Call
with switch togithub.com/go-stack/stack
- a5e7613673c73281f58e15a87d2cf0cf111e8152 - Restored
syslog.Priority
argument to theSyslogXxx
handler constructors
FAQ
The varargs style is brittle and error prone! Can I have type safety please?
Yes. Use log.Ctx
:
srvlog := log.New(log.Ctx{"module": "app/server"})
srvlog.Warn("abnormal conn rate", log.Ctx{"rate": curRate, "low": lowRate, "high": highRate})
License
Apache
# Packages
No description provided by the author
# Functions
BufferedHandler writes all records to a buffered channel of the given size which flushes into the wrapped handler whenever it is available for writing.
CallerFileHandler returns a Handler that adds the line number and file of the calling function to the context with key "caller".
CallerFuncHandler returns a Handler that adds the calling function name to the context with key "fn".
CallerStackHandler returns a Handler that adds a stack trace to the context with key "stack".
ChannelHandler writes all records to the given channel.
No description provided by the author
No description provided by the author
No description provided by the author
DiscardHandler reports success for all writes but does nothing.
No description provided by the author
No description provided by the author
FailoverHandler writes all log records to the first handler specified, but will failover and write to the second handler if the first handler has failed, and so on for all handlers specified.
FileHandler returns a handler which writes log records to the give file using the given format.
FilterHandler returns a Handler that only writes records to the wrapped Handler if the given function evaluates true.
No description provided by the author
FuncHandler returns a Handler that logs records with the given function.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
LazyHandler writes all values to the wrapped handler after evaluating any lazy functions in the record's context.
No description provided by the author
LvlFilterHandler returns a Handler that only writes records which are less than the given verbosity level to the wrapped Handler.
No description provided by the author
MatchFilterHandler returns a Handler that only writes records to the wrapped Handler if the given key in the logged context matches the value.
MultiHandler dispatches any write to each of its handlers.
NetHandler opens a socket to the given address and writes records over the connection.
No description provided by the author
NewGlogHandler creates a new log handler with filtering functionality similar to Google's glog logger.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
RotatingFileHandler returns a handler which writes log records to file chunks at the given path.
StreamHandler writes log records to an io.Writer with the given format.
SyncHandler can be wrapped around a handler to guarantee that only a single Log operation can proceed at a time.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Variables
Must provides the following Handler creation functions which instead of returning an error parameter only return a Handler and panic on failure: FileHandler, NetHandler, SyslogHandler, SyslogNetHandler.
No description provided by the author
No description provided by the author
# Structs
GlogHandler is a log handler that mimics the filtering features of Google's glog logger: setting global log levels; overriding with callsite pattern matches; and requesting backtraces at certain positions.
No description provided by the author
No description provided by the author
No description provided by the author
# Interfaces
No description provided by the author
Handler defines where and how log records are written.
No description provided by the author
No description provided by the author