Documentation ¶
Overview ¶
Package logger defines interfaces that logger drivers implement to log messages.
The other half of a logger driver is the implementation of the factory, which holds the contextual instance information that allows multiple loggers of the same type to perform different actions, such as logging to different locations.
Index ¶
- func AddBuiltinLogOpts(opts map[string]bool)
- func ListDrivers() []string
- func PutMessage(msg *Message)
- func RegisterExternalValidator(v LogOptValidator)
- func RegisterLogDriver(name string, c Creator) error
- func RegisterLogOptValidator(name string, l LogOptValidator) error
- func RegisterPluginGetter(plugingetter getter.PluginGetter)
- func ValidateLogOpts(name string, cfg map[string]string) error
- type Capability
- type Copier
- type Creator
- type ErrReadLogsNotSupported
- type Info
- func (info *Info) Command() string
- func (info *Info) ExtraAttributes(keyMod func(string) string) (map[string]string, error)
- func (info *Info) FullID() string
- func (info *Info) Hostname() (string, error)
- func (info *Info) ID() string
- func (info *Info) ImageFullID() string
- func (info *Info) ImageID() string
- func (info *Info) ImageName() string
- func (info *Info) Name() string
- type LogOptValidator
- type LogReader
- type LogWatcher
- type Logger
- type Message
- type ReadConfig
- type RingLogger
- type SizedLogger
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddBuiltinLogOpts ¶
AddBuiltinLogOpts updates the list of built-in log opts. This allows other packages to supplement additional log options without having to register an actual log driver. This is used by things that are more proxy log drivers and should not be exposed as a usable log driver to the API. This should only be called on package initialization.
func ListDrivers ¶
func ListDrivers() []string
ListDrivers gets the list of registered log driver names
func PutMessage ¶
func PutMessage(msg *Message)
PutMessage puts the specified message back n the message pool. The message fields are reset before putting into the pool.
func RegisterExternalValidator ¶
func RegisterExternalValidator(v LogOptValidator)
RegisterExternalValidator adds the validator to the list of external validators. External validators are used by packages outside this package that need to add their own validation logic. This should only be called on package initialization.
func RegisterLogDriver ¶
RegisterLogDriver registers the given logging driver builder with given logging driver name.
func RegisterLogOptValidator ¶
func RegisterLogOptValidator(name string, l LogOptValidator) error
RegisterLogOptValidator registers the logging option validator with the given logging driver name.
func RegisterPluginGetter ¶
func RegisterPluginGetter(plugingetter getter.PluginGetter)
RegisterPluginGetter sets the plugingetter
Types ¶
type Capability ¶
type Capability struct { // Determines if a log driver can read back logs ReadLogs bool }
Capability defines the list of capabilities that a driver can implement These capabilities are not required to be a logging driver, however do determine how a logging driver can be used
type Copier ¶
type Copier struct {
// contains filtered or unexported fields
}
Copier can copy logs from specified sources to Logger and attach Timestamp. Writes are concurrent, so you need implement some sync in your logger.
type Creator ¶
Creator builds a logging driver instance with given context.
func GetLogDriver ¶
GetLogDriver provides the logging driver builder for a logging driver name.
type ErrReadLogsNotSupported ¶
type ErrReadLogsNotSupported struct{}
ErrReadLogsNotSupported is returned when the underlying log driver does not support reading
func (ErrReadLogsNotSupported) Error ¶
func (ErrReadLogsNotSupported) Error() string
func (ErrReadLogsNotSupported) NotImplemented ¶
func (ErrReadLogsNotSupported) NotImplemented()
NotImplemented makes this error implement the `NotImplemented` interface from api/errdefs
type Info ¶
type Info struct { Config map[string]string ContainerID string ContainerName string ContainerEntrypoint string ContainerArgs []string ContainerImageID string ContainerImageName string ContainerCreated time.Time ContainerEnv []string ContainerLabels map[string]string LogPath string DaemonName string }
Info provides enough information for a logging driver to do its function.
func (*Info) Command ¶
Command returns the command that the container being logged was started with. The Entrypoint is prepended to the container arguments.
func (*Info) ExtraAttributes ¶
ExtraAttributes returns the user-defined extra attributes (labels, environment variables) in key-value format. This can be used by log drivers that support metadata to add more context to a log.
func (*Info) ImageFullID ¶
ImageFullID is an alias of ContainerImageID.
type LogOptValidator ¶
LogOptValidator checks the options specific to the underlying logging implementation.
type LogReader ¶
type LogReader interface { // ReadLogs reads logs from underlying logging backend. ReadLogs(context.Context, ReadConfig) *LogWatcher }
LogReader is the interface for reading log messages for loggers that support reading.
type LogWatcher ¶
type LogWatcher struct { // For sending log messages to a reader. Msg chan *Message // For sending error messages that occur while reading logs. Err chan error // contains filtered or unexported fields }
LogWatcher is used when consuming logs read from the LogReader interface.
func (*LogWatcher) ConsumerGone ¶
func (w *LogWatcher) ConsumerGone()
ConsumerGone notifies that the logs consumer is gone.
func (*LogWatcher) WatchConsumerGone ¶
func (w *LogWatcher) WatchConsumerGone() <-chan struct{}
WatchConsumerGone returns a channel receiver that receives notification when the log watcher consumer is gone.
type Message ¶
type Message backend.LogMessage
Message is data structure that represents piece of output produced by some container. The Line member is a slice of an array whose contents can be changed after a log driver's Log() method returns.
Message is subtyped from backend.LogMessage because there is a lot of internal complexity around the Message type that should not be exposed to any package not explicitly importing the logger type.
func NewMessage ¶
func NewMessage() *Message
NewMessage returns a new message from the message sync.Pool
func (*Message) AsLogMessage ¶
func (m *Message) AsLogMessage() *backend.LogMessage
AsLogMessage returns a pointer to the message as a pointer to backend.LogMessage, which is an identical type with a different purpose
type ReadConfig ¶
ReadConfig is the configuration passed into ReadLogs.
type RingLogger ¶
type RingLogger struct {
// contains filtered or unexported fields
}
RingLogger is a ring buffer that implements the Logger interface. This is used when lossy logging is OK.
func (*RingLogger) BufSize ¶
func (r *RingLogger) BufSize() int
BufSize returns the buffer size of the underlying logger. Returns -1 if the logger doesn't match SizedLogger interface.
func (*RingLogger) Log ¶
func (r *RingLogger) Log(msg *Message) error
Log queues messages into the ring buffer
func (*RingLogger) Name ¶
func (r *RingLogger) Name() string
Name returns the name of the underlying logger
type SizedLogger ¶
SizedLogger is the interface for logging drivers that can control the size of buffer used for their messages.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package awslogs provides the logdriver for forwarding container logs to Amazon CloudWatch Logs
|
Package awslogs provides the logdriver for forwarding container logs to Amazon CloudWatch Logs |
Package etwlogs provides a log driver for forwarding container logs as ETW events.(ETW stands for Event Tracing for Windows) A client can then create an ETW listener to listen for events that are sent by the ETW provider that we register, using the provider's GUID "a3693192-9ed6-46d2-a981-f8226c8363bd".
|
Package etwlogs provides a log driver for forwarding container logs as ETW events.(ETW stands for Event Tracing for Windows) A client can then create an ETW listener to listen for events that are sent by the ETW provider that we register, using the provider's GUID "a3693192-9ed6-46d2-a981-f8226c8363bd". |
Package fluentd provides the log driver for forwarding server logs to fluentd endpoints.
|
Package fluentd provides the log driver for forwarding server logs to fluentd endpoints. |
Package gelf provides the log driver for forwarding server logs to endpoints that support the Graylog Extended Log Format.
|
Package gelf provides the log driver for forwarding server logs to endpoints that support the Graylog Extended Log Format. |
Package journald provides the log driver for forwarding server logs to endpoints that receive the systemd format.
|
Package journald provides the log driver for forwarding server logs to endpoints that receive the systemd format. |
internal/export
Package export implements a serializer for the systemd Journal Export Format as documented at https://systemd.io/JOURNAL_EXPORT_FORMATS/
|
Package export implements a serializer for the systemd Journal Export Format as documented at https://systemd.io/JOURNAL_EXPORT_FORMATS/ |
internal/fake
Package fake implements a journal writer for testing which is decoupled from the system's journald.
|
Package fake implements a journal writer for testing which is decoupled from the system's journald. |
internal/sdjournal
Package sdjournal provides a Go interface to the systemd journal read API by wrapping the libsystemd C library.
|
Package sdjournal provides a Go interface to the systemd journal read API by wrapping the libsystemd C library. |
Package jsonfilelog provides the default Logger implementation for Docker logging.
|
Package jsonfilelog provides the default Logger implementation for Docker logging. |
Package local provides a logger implementation that stores logs on disk.
|
Package local provides a logger implementation that stores logs on disk. |
Package splunk provides the log driver for forwarding server logs to Splunk HTTP Event Collector endpoint.
|
Package splunk provides the log driver for forwarding server logs to Splunk HTTP Event Collector endpoint. |
Package syslog provides the logdriver for forwarding server logs to syslog endpoints.
|
Package syslog provides the logdriver for forwarding server logs to syslog endpoints. |