Documentation
¶
Overview ¶
Package logging implements a logging infrastructure for Go. It supports different logging backends like syslog, file and memory. Multiple backends can be utilized with different log levels per backend and logger.
Index ¶
- Constants
- Variables
- func ColorSeq(color color) string
- func ColorSeqBold(color color) string
- func ConvertColors(colors []int, bold bool) []string
- func Redact(s string) string
- func Reset()
- func SetFormatter(f Formatter)
- type Backend
- type Formatter
- type Level
- type LogBackend
- type Logger
- func (l *Logger) Critical(args ...interface{})
- func (l *Logger) Criticalf(format string, args ...interface{})
- func (l *Logger) Debug(args ...interface{})
- func (l *Logger) Debugf(format string, args ...interface{})
- func (l *Logger) Error(args ...interface{})
- func (l *Logger) Errorf(format string, args ...interface{})
- func (l *Logger) Fatal(args ...interface{})
- func (l *Logger) Fatalf(format string, args ...interface{})
- func (l *Logger) Info(args ...interface{})
- func (l *Logger) Infof(format string, args ...interface{})
- func (l *Logger) IsEnabledFor(level Level) bool
- func (l *Logger) Notice(args ...interface{})
- func (l *Logger) Noticef(format string, args ...interface{})
- func (l *Logger) Panic(args ...interface{})
- func (l *Logger) Panicf(format string, args ...interface{})
- func (l *Logger) Print(args ...interface{})
- func (l *Logger) Printf(format string, args ...interface{})
- func (l *Logger) SetBackend(backend Backend)
- func (l *Logger) SetDumpBehavior(enable bool, lvl Level, dumpPrefix string)
- func (l *Logger) SetFormatter(fmt Formatter)
- func (l *Logger) SetLevel(lvl Level)
- func (l *Logger) Warning(args ...interface{})
- func (l *Logger) Warningf(format string, args ...interface{})
- func (l *Logger) WithContext(context string) *Logger
- func (l *Logger) WithLevel(level Level) *Logger
- type Record
- type Redactor
- type SyslogBackend
Constants ¶
const ( ColorBlack = iota + 30 ColorRed ColorGreen ColorYellow ColorBlue ColorMagenta ColorCyan ColorWhite )
Variables ¶
var ( // DefaultFormatter is the default formatter used and is only the message. DefaultFormatter = MustStringFormatter("%{message}") // GlogFormatter mimics the glog format GlogFormatter = MustStringFormatter("%{level:.1s}%{time:0102 15:04:05.999999} %{pid} %{shortfile}] %{message}") )
var ErrInvalidLogLevel = errors.New("logger: invalid log level")
ErrInvalidLogLevel is used when an invalid log level has been used.
Functions ¶
func ColorSeqBold ¶
func ColorSeqBold(color color) string
func ConvertColors ¶
ConvertColors takes a list of ints representing colors for log levels and converts them into strings for ANSI color formatting
func SetFormatter ¶
func SetFormatter(f Formatter)
SetFormatter sets the default formatter for all new backends. A backend will fetch this value once it is needed to format a record. Note that backends will cache the formatter after the first point. For now, make sure to set the formatter before logging.
Types ¶
type Backend ¶
type Backend interface { Log(Level, int, *Record) error LogStr(Level, int, string) error GetFormatter() Formatter }
Backend is the interface which a log backend need to implement to be able to be used as a logging backend.
func NewBackendFormatter ¶
NewBackendFormatter creates a new backend which makes all records that passes through it beeing formatted by the specific formatter.
type Formatter ¶
Formatter is the required interface for a custom log record formatter.
func MustStringFormatter ¶
MustStringFormatter is equivalent to NewStringFormatter with a call to panic on error.
func NewStringFormatter ¶
NewStringFormatter returns a new Formatter which outputs the log record as a string based on the 'verbs' specified in the format string.
The verbs:
General:
%{id} Sequence number for log message (uint64). %{pid} Process id (int) %{time} Time when log occurred (time.Time) %{level} Log level (Level) %{module} Module (string) %{program} Basename of os.Args[0] (string) %{message} Message (string) %{longfile} Full file name and line number: /a/b/c/d.go:23 %{shortfile} Final file name element and line number: d.go:23 %{callpath} Callpath like main.a.b.c...c "..." meaning recursive call ~. meaning truncated path %{color} ANSI color based on log level
For normal types, the output can be customized by using the 'verbs' defined in the fmt package, eg. '%{id:04d}' to make the id output be '%04d' as the format string.
For time.Time, use the same layout as time.Format to change the time format when output, eg "2006-01-02T15:04:05.999Z-07:00".
For the 'color' verb, the output can be adjusted to either use bold colors, i.e., '%{color:bold}' or to reset the ANSI attributes, i.e., '%{color:reset}' Note that if you use the color verb explicitly, be sure to reset it or else the color state will persist past your log message. e.g., "%{color:bold}%{time:15:04:05} %{level:-8s}%{color:reset} %{message}" will just colorize the time and level, leaving the message uncolored.
For the 'callpath' verb, the output can be adjusted to limit the printing the stack depth. i.e. '%{callpath:3}' will print '~.a.b.c'
Colors on Windows is unfortunately not supported right now and is currently a no-op.
There's also a couple of experimental 'verbs'. These are exposed to get feedback and needs a bit of tinkering. Hence, they might change in the future.
Experimental:
%{longpkg} Full package path, eg. github.com/go-logging %{shortpkg} Base package path, eg. go-logging %{longfunc} Full function name, eg. littleEndian.PutUint32 %{shortfunc} Base function name, eg. PutUint32 %{callpath} Call function path, eg. main.a.b.c
type Level ¶
type Level int
Level defines all available log levels for log messages.
type LogBackend ¶
LogBackend utilizes the standard log module.
func NewLogBackend ¶
func NewLogBackend(out io.Writer, prefix string, flag int) *LogBackend
NewLogBackend creates a new LogBackend.
func (*LogBackend) GetFormatter ¶
func (b *LogBackend) GetFormatter() Formatter
type Logger ¶
type Logger struct { Module string // ExtraCallDepth can be used to add additional call depth when getting the // calling function. This is normally used when wrapping a logger. ExtraCalldepth int Context string // contains filtered or unexported fields }
Logger is the actual logger which creates log records based on the functions called and passes them to the underlying logging backend.
func MustGetLogger ¶
MustGetLogger is like GetLogger but panics if the logger can't be created. It simplifies safe initialization of a global logger for eg. a package.
func (*Logger) Critical ¶
func (l *Logger) Critical(args ...interface{})
Critical logs a message using CRITICAL as log level.
func (*Logger) Debug ¶
func (l *Logger) Debug(args ...interface{})
Debug logs a message using DEBUG as log level.
func (*Logger) Error ¶
func (l *Logger) Error(args ...interface{})
Error logs a message using ERROR as log level.
func (*Logger) Fatal ¶
func (l *Logger) Fatal(args ...interface{})
Fatal is equivalent to l.Critical(fmt.Sprint()) followed by a call to os.Exit(1).
func (*Logger) Info ¶
func (l *Logger) Info(args ...interface{})
Info logs a message using INFO as log level.
func (*Logger) IsEnabledFor ¶
IsEnabledFor returns true if the logger is enabled for the given level.
func (*Logger) Notice ¶
func (l *Logger) Notice(args ...interface{})
Notice logs a message using NOTICE as log level.
func (*Logger) Panic ¶
func (l *Logger) Panic(args ...interface{})
Panic is equivalent to l.Critical(fmt.Sprint()) followed by a call to panic().
func (*Logger) SetBackend ¶
SetBackend overrides any previously defined backend for this logger.
func (*Logger) SetDumpBehavior ¶
SetDumpBehavior ...
func (*Logger) Warning ¶
func (l *Logger) Warning(args ...interface{})
Warning logs a message using WARNING as log level.
func (*Logger) WithContext ¶
WithContext builds new logger with new ring buffer inside but with inherited context
type Record ¶
type Record struct { ID uint64 Time time.Time Module string Level Level Args []interface{} // contains filtered or unexported fields }
Record represents a log record and contains the timestamp when the record was created, an increasing id, filename and line and finally the actual formatted log line.
type Redactor ¶
type Redactor interface {
Redacted() interface{}
}
Redactor is an interface for types that may contain sensitive information (like passwords), which shouldn't be printed to the log. The idea was found in relog as part of the vitness project.
type SyslogBackend ¶
SyslogBackend is a simple logger to syslog backend. It automatically maps the internal log levels to appropriate syslog log levels.
func NewSyslogBackend ¶
func NewSyslogBackend(network, addr string, prefix string) (b *SyslogBackend, err error)
NewSyslogBackend connects to the syslog daemon using UNIX sockets with the given prefix. If prefix is not given, the prefix will be derived from the launched command.
func NewSyslogBackendPriority ¶
func NewSyslogBackendPriority(network, addr string, prefix string, priority syslog.Priority) (b *SyslogBackend, err error)
NewSyslogBackendPriority is the same as NewSyslogBackend, but with custom syslog priority, like syslog.LOG_LOCAL3|syslog.LOG_DEBUG etc.
func (*SyslogBackend) GetFormatter ¶
func (b *SyslogBackend) GetFormatter() Formatter