package xlog
import "github.com/hlandau/xlog"
Package xlog provides a hierarchical, configurable logging system suitable for use in libraries.
Index ¶
- func New(name string) (Logger, Site)
- func NewQuiet(name string) (Logger, Site)
- func NewUnder(name string, site Site) (Logger, Site)
- func VisitSites(siteFunc func(s Site) error) error
- type LogClosure
- type Logger
- func (l Logger) Alert(params ...interface{})
- func (l Logger) Alerte(err error, params ...interface{})
- func (l Logger) Alertef(err error, format string, params ...interface{})
- func (l Logger) Alertf(format string, params ...interface{})
- func (l Logger) Critical(params ...interface{})
- func (l Logger) Criticale(err error, params ...interface{})
- func (l Logger) Criticalef(err error, format string, params ...interface{})
- func (l Logger) Criticalf(format string, params ...interface{})
- func (l Logger) Debug(params ...interface{})
- func (l Logger) Debuge(err error, params ...interface{})
- func (l Logger) Debugef(err error, format string, params ...interface{})
- func (l Logger) Debugf(format string, params ...interface{})
- func (l Logger) Emergency(params ...interface{})
- func (l Logger) Emergencye(err error, params ...interface{})
- func (l Logger) Emergencyef(err error, format string, params ...interface{})
- func (l Logger) Emergencyf(format string, params ...interface{})
- func (l Logger) Error(params ...interface{})
- func (l Logger) Errore(err error, params ...interface{})
- func (l Logger) Erroref(err error, format string, params ...interface{})
- func (l Logger) Errorf(format string, params ...interface{})
- func (l Logger) Fatal(params ...interface{})
- func (l Logger) Fatale(err error, params ...interface{})
- func (l Logger) Fatalef(err error, format string, params ...interface{})
- func (l Logger) Fatalf(format string, params ...interface{})
- func (l Logger) Info(params ...interface{})
- func (l Logger) Infoe(err error, params ...interface{})
- func (l Logger) Infoef(err error, format string, params ...interface{})
- func (l Logger) Infof(format string, params ...interface{})
- func (l Logger) Notice(params ...interface{})
- func (l Logger) Noticee(err error, params ...interface{})
- func (l Logger) Noticeef(err error, format string, params ...interface{})
- func (l Logger) Noticef(format string, params ...interface{})
- func (l Logger) Panic(params ...interface{})
- func (l Logger) Panice(err error, params ...interface{})
- func (l Logger) Panicef(err error, format string, params ...interface{})
- func (l Logger) Panicf(format string, params ...interface{})
- func (l Logger) ReceiveLocallye(severity Severity, err error, format string, params ...interface{})
- func (l Logger) Trace(params ...interface{})
- func (l Logger) Tracee(err error, params ...interface{})
- func (l Logger) Traceef(err error, format string, params ...interface{})
- func (l Logger) Tracef(format string, params ...interface{})
- func (l Logger) Warn(params ...interface{})
- func (l Logger) Warne(err error, params ...interface{})
- func (l Logger) Warnef(err error, format string, params ...interface{})
- func (l Logger) Warnf(format string, params ...interface{})
- type MultiSink
- func (ms *MultiSink) Add(sink Sink)
- func (ms *MultiSink) ReceiveFromChild(sev Severity, format string, params ...interface{})
- func (ms *MultiSink) ReceiveLocally(sev Severity, format string, params ...interface{})
- func (ms *MultiSink) Remove(sink Sink)
- type Severity
- func ParseSeverity(severity string) (s Severity, ok bool)
- func (severity Severity) String() string
- func (severity Severity) Syslog() Severity
- type Sink
- type Site
- type SyslogSink
- func NewSyslogSink(syslogger Syslogger) *SyslogSink
- func (ss *SyslogSink) ReceiveFromChild(sev Severity, format string, params ...interface{})
- func (ss *SyslogSink) ReceiveLocally(sev Severity, format string, params ...interface{})
- func (ss *SyslogSink) SetSeverity(sev Severity)
- type Syslogger
- type WriterSink
Functions ¶
func New ¶
Creates a new logger.
While there are no particular restrictions on facility names, the preferred convention for the facility name is a dot-separated hierarchy of words matching [a-zA-Z0-9_-]+. Hyphens are preferred over underscores, and uppercase should be avoided in most cases.
The facility name should reflect the package and, if the package's status as a subpackage is of particular significance or grouping is desirable, a parent package.
For example, if you have a package foo which has 10 subpackages which implement different parts of foo, you might give them facility names like "foo.alpha", "foo.beta", "foo.gamma", etc.
Typical usage:
var log, Log = xlog.New("facility name")
func NewQuiet ¶
Like New, but the created logger by default doesn't output anything but the most severe errors. Intended for use by libraries so that consuming code needs to opt in to log output by that library.
func NewUnder ¶
Creates a logger which is subordinate to another logger.
All log messages will be forwarded through the parent logger, meaning that any filtration or forwarding settings set on the parent logger will also apply to this one.
The name of the logger is formed by appending the name given to the name of the parent logger and ".". If site is nil, behaves like New().
func VisitSites ¶
Calls a function for every Site which has been created.
Do not attempt to create new loggers from the callback.
Types ¶
type LogClosure ¶
type LogClosure func() string
LogClosure can be used to pass a function that returns a string to a log method call. This is useful if the computation of a log message is expensive and the message will often be filtered.
func (LogClosure) String ¶
func (c LogClosure) String() string
type Logger ¶
type Logger struct { Sink }
Logger is the interface exposed to the internals of a package, which uses it to log messages. This is the other side of a Site.
The 'f' functions work like Printf. The suffix-free functions work like 'Print'. The 'e' functions are no-ops if nil is passed for the error; otherwise, they print the error as well as the arguments specified.
Fatal calls os.Exit(1) like "log", and Panic panics. Both emit Critical-severity log messages before doing so.
func (Logger) Alert ¶
func (l Logger) Alert(params ...interface{})
func (Logger) Alerte ¶
func (Logger) Alertef ¶
func (Logger) Alertf ¶
func (Logger) Critical ¶
func (l Logger) Critical(params ...interface{})
func (Logger) Criticale ¶
func (Logger) Criticalef ¶
func (Logger) Criticalf ¶
func (Logger) Debug ¶
func (l Logger) Debug(params ...interface{})
func (Logger) Debuge ¶
func (Logger) Debugef ¶
func (Logger) Debugf ¶
func (Logger) Emergency ¶
func (l Logger) Emergency(params ...interface{})
func (Logger) Emergencye ¶
func (Logger) Emergencyef ¶
func (Logger) Emergencyf ¶
func (Logger) Error ¶
func (l Logger) Error(params ...interface{})
func (Logger) Errore ¶
func (Logger) Erroref ¶
func (Logger) Errorf ¶
func (Logger) Fatal ¶
func (l Logger) Fatal(params ...interface{})
func (Logger) Fatale ¶
func (Logger) Fatalef ¶
func (Logger) Fatalf ¶
func (Logger) Info ¶
func (l Logger) Info(params ...interface{})
func (Logger) Infoe ¶
func (Logger) Infoef ¶
func (Logger) Infof ¶
func (Logger) Notice ¶
func (l Logger) Notice(params ...interface{})
func (Logger) Noticee ¶
func (Logger) Noticeef ¶
func (Logger) Noticef ¶
func (Logger) Panic ¶
func (l Logger) Panic(params ...interface{})
func (Logger) Panice ¶
func (Logger) Panicef ¶
func (Logger) Panicf ¶
func (Logger) ReceiveLocallye ¶
func (Logger) Trace ¶
func (l Logger) Trace(params ...interface{})
func (Logger) Tracee ¶
func (Logger) Traceef ¶
func (Logger) Tracef ¶
func (Logger) Warn ¶
func (l Logger) Warn(params ...interface{})
func (Logger) Warne ¶
func (Logger) Warnef ¶
func (Logger) Warnf ¶
type MultiSink ¶
type MultiSink struct {
// contains filtered or unexported fields
}
A sink which dispatches to zero or more other sinks.
var RootSink MultiSink
The sink which is used by default by the root logger.
func (*MultiSink) Add ¶
Add a sink to the MultiSink. Idempotent.
func (*MultiSink) ReceiveFromChild ¶
(Implements Sink.)
func (*MultiSink) ReceiveLocally ¶
(Implements Sink.)
func (*MultiSink) Remove ¶
Remove a sink from the MultiSink. Idempotent.
type Severity ¶
type Severity int
Log message severity. This is the syslog severity order.
Note that Emergency and Alert are system-level severities. Generally speaking, application programs should not emit log messages at such severities unless they are programs which monitor the system for system-level issues. i.e., programs should never emit Emergency or Alert messages regarding issues with their own operation.
Programs suffering from critical failures should emit log messages at the Critical severity. The Panic*() and Fatal*() log message functions in this package emit log messages at the Critical level.
The Error severity should be used when errors occur which do not constitute a critical or unrecoverable failure of the program.
Any severity less severe than Debug is not part of the syslog severity order. These are converted to messages of Debug severity when exported to e.g. syslog.
Trace should be used for extremely verbose debugging information which is likely to be used mainly for debugging and is of such verbosity that it may overwhelm a programmer unless enabled only for a few specific facilities.
const ( SevEmergency Severity = iota SevAlert SevCritical SevError SevWarn SevNotice SevInfo SevDebug SevTrace SevNone Severity = -1 // (Do not use.) )
func ParseSeverity ¶
Parse a severity string.
func (Severity) String ¶
Returns the severity as an uppercase unabbreviated string.
func (Severity) Syslog ¶
Returns the syslog-compatible severity. Converts severities less severe than Debug to Debug.
type Sink ¶
type Sink interface { ReceiveLocally(sev Severity, format string, params ...interface{}) ReceiveFromChild(sev Severity, format string, params ...interface{}) }
Sink is implemented by objects that can receive log messages from loggers deeper in the hierarchy.
var NullSink Sink
The null sink. All log messages to this sink will be discarded.
type Site ¶
type Site interface { // The facility name. Name() string // Sets the severity condition. SetSeverity(severity Severity) // Set the sink which will receive all messages from this logger. SetSink(sink Sink) }
Site is the interface exposed to the externals of a package, which uses it to configure the logger. This is the other side of a Logger.
var Root Site = rootLogger
The root logger.
type SyslogSink ¶
type SyslogSink struct {
// contains filtered or unexported fields
}
A sink that logs to a "log/syslog".Writer-like interface.
func NewSyslogSink ¶
func NewSyslogSink(syslogger Syslogger) *SyslogSink
Create a new syslog sink. "log/syslog".Writer implements Syslogger.
func (*SyslogSink) ReceiveFromChild ¶
func (ss *SyslogSink) ReceiveFromChild(sev Severity, format string, params ...interface{})
func (*SyslogSink) ReceiveLocally ¶
func (ss *SyslogSink) ReceiveLocally(sev Severity, format string, params ...interface{})
func (*SyslogSink) SetSeverity ¶
func (ss *SyslogSink) SetSeverity(sev Severity)
type Syslogger ¶
type Syslogger interface { Alert(m string) error Crit(m string) error Debug(m string) error Emerg(m string) error Err(m string) error Info(m string) error Notice(m string) error Warning(m string) error }
Interface compatible with "log/syslog".Writer.
type WriterSink ¶
type WriterSink struct { Systemd bool // Use systemd-format output: "<3>some-log-message" // contains filtered or unexported fields }
Sink which writes each log message on a line to an io.Writer.
var StderrSink *WriterSink
A sink which writes to stderr. This is added to the root sink by default.
func NewWriterSink ¶
func NewWriterSink(w io.Writer) *WriterSink
func (*WriterSink) ReceiveFromChild ¶
func (ws *WriterSink) ReceiveFromChild(sev Severity, format string, params ...interface{})
func (*WriterSink) ReceiveLocally ¶
func (ws *WriterSink) ReceiveLocally(sev Severity, format string, params ...interface{})
func (*WriterSink) SetSeverity ¶
func (ws *WriterSink) SetSeverity(sev Severity)
Source Files ¶
logger.go multisink.go severity.go syslogsink.go terminal.go writersink.go xlog.go
- Version
- v1.0.0 (latest)
- Published
- Mar 28, 2016
- Platform
- linux/amd64
- Imports
- 8 packages
- Last checked
- 1 month ago –
Tools for package owners.