loggers

package
v0.29.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 22, 2019 License: Apache-2.0 Imports: 16 Imported by: 32

Documentation

Index

Constants

View Source
const (
	JSONFormat     = "json"
	LogfmtFormat   = "logfmt"
	TerminalFormat = "terminal"
	DefaultFormat  = TerminalFormat
)
View Source
const (
	DefaultLoggingRingBufferCap channels.BufferCap = 100
)

Variables

This section is empty.

Functions

func BurrowFormatLogger added in v0.17.0

func BurrowFormatLogger(logger log.Logger) *burrowFormatLogger

func FilterLogger added in v0.18.0

func FilterLogger(outputLogger log.Logger, predicate func(keyvals []interface{}) bool) log.Logger

Filter logger allows us to filter lines logged to it before passing on to underlying output logger Creates a logger that removes lines from output when the predicate evaluates true

func NewMultipleOutputLogger

func NewMultipleOutputLogger(outputLoggers ...log.Logger) log.Logger

Creates a logger that forks log messages to each of its outputLoggers

func NewStreamLogger added in v0.17.0

func NewStreamLogger(writer io.Writer, format string) (log.Logger, error)

func NewTemplateLogger added in v0.18.0

func NewTemplateLogger(writer io.Writer, textTemplate string, recordSeparator []byte) (log.Logger, error)

func SortLogger added in v0.18.0

func SortLogger(outputLogger log.Logger, keys ...string) log.Logger

Provides a logger that sorts key-values with keys in keys before other key-values

func VectorValuedLogger

func VectorValuedLogger(logger log.Logger) *vectorValuedLogger

Types

type CaptureLogger added in v0.17.0

type CaptureLogger struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewCaptureLogger added in v0.17.0

func NewCaptureLogger(outputLogger log.Logger, bufferCap channels.BufferCap, passthrough bool) *CaptureLogger

Capture logger captures output sent to it in a buffer retaining a reference to its output logger (the logger whose input it is capturing). It can optionally pass logs through to the output logger. Because it holds a reference to its output it can also be used to coordinate Flushing of the buffer to the output logger in special circumstances.

func (*CaptureLogger) BufferLogger added in v0.17.0

func (cl *CaptureLogger) BufferLogger() *ChannelLogger

The BufferLogger where the input into these CaptureLogger is stored in a ring buffer of log lines.

func (*CaptureLogger) Flush added in v0.17.0

func (cl *CaptureLogger) Flush() error

Flushes every log line available in the buffer at the time of calling to the OutputLogger and returns. Does not block indefinitely.

Note: will remove log lines from buffer so they will not be produced on any subsequent flush of buffer

func (*CaptureLogger) FlushLogLines added in v0.17.0

func (cl *CaptureLogger) FlushLogLines() [][]interface{}

Flushes every log line available in the buffer at the time of calling to a slice and returns it. Does not block indefinitely.

Note: will remove log lines from buffer so they will not be produced on any subsequent flush of buffer

func (*CaptureLogger) Log added in v0.17.0

func (cl *CaptureLogger) Log(keyvals ...interface{}) error

func (*CaptureLogger) OutputLogger added in v0.17.0

func (cl *CaptureLogger) OutputLogger() log.Logger

The OutputLogger whose input this CaptureLogger is capturing

func (*CaptureLogger) Passthrough added in v0.17.0

func (cl *CaptureLogger) Passthrough() bool

Gets whether the CaptureLogger is forwarding log lines sent to through to its OutputLogger. Concurrently Safe.

func (*CaptureLogger) SetPassthrough added in v0.17.0

func (cl *CaptureLogger) SetPassthrough(passthrough bool)

Sets whether the CaptureLogger is forwarding log lines sent to it through to its output logger. Concurrently safe.

type ChannelLogger

type ChannelLogger struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewChannelLogger added in v0.17.0

func NewChannelLogger(loggingRingBufferCap channels.BufferCap) *ChannelLogger

Creates a Logger that uses a uses a non-blocking ring buffered channel. This logger provides a common abstraction for both a buffered, flushable logging cache. And a non-blocking conduit to transmit logs via DrainForever (or NonBlockingLogger).

func NonBlockingLogger

func NonBlockingLogger(outputLogger log.Logger) (*ChannelLogger, channels.Channel)

Returns a Logger that wraps the outputLogger passed and does not block on calls to Log and a channel of any errors from the underlying logger

func (*ChannelLogger) BufferCap added in v0.17.0

func (cl *ChannelLogger) BufferCap() channels.BufferCap

Get the cap off the internal ring buffer

func (*ChannelLogger) BufferLength added in v0.17.0

func (cl *ChannelLogger) BufferLength() int

Get the current occupancy level of the ring buffer

func (*ChannelLogger) DrainForever added in v0.17.0

func (cl *ChannelLogger) DrainForever(logger log.Logger, errCh channels.Channel)

Enters an infinite loop that will drain any log lines from the passed logger. You may pass in a channel

Exits if the channel is closed.

func (*ChannelLogger) Flush added in v0.17.0

func (cl *ChannelLogger) Flush(logger log.Logger) error

Drains everything that is available at the time of calling

func (*ChannelLogger) FlushLogLines added in v0.17.0

func (cl *ChannelLogger) FlushLogLines() [][]interface{}

Drains the next contiguous segment of loglines up to the buffer cap waiting for at least one line

func (*ChannelLogger) Log

func (cl *ChannelLogger) Log(keyvals ...interface{}) error

func (*ChannelLogger) ReadLogLine

func (cl *ChannelLogger) ReadLogLine() []interface{}

Tries to read a log line from the channel buffer or returns nil if none is immediately available

func (*ChannelLogger) Reset added in v0.17.0

func (cl *ChannelLogger) Reset()

Close the existing channel halting goroutines that are draining the channel and create a new channel to buffer into. Should not cause any log lines arriving concurrently to be lost, but any that have not been drained from old channel may be.

func (*ChannelLogger) WaitReadLogLine

func (cl *ChannelLogger) WaitReadLogLine() []interface{}

Read a log line by waiting until one is available and returning it

type FileLogger added in v0.20.1

type FileLogger struct {
	// contains filtered or unexported fields
}

func NewFileLogger added in v0.17.0

func NewFileLogger(path string, formatName string) (*FileLogger, error)

func (*FileLogger) Log added in v0.20.1

func (fl *FileLogger) Log(keyvals ...interface{}) error

func (*FileLogger) Reload added in v0.20.1

func (fl *FileLogger) Reload() error

type FileTemplateParams added in v0.20.1

type FileTemplateParams struct {
	Date time.Time
}

func NewFileTemplateParams added in v0.20.1

func NewFileTemplateParams() *FileTemplateParams

func (*FileTemplateParams) Timestamp added in v0.20.1

func (ftp *FileTemplateParams) Timestamp() string

type MultipleOutputLogger

type MultipleOutputLogger []log.Logger

This represents an 'AND' type logger. When logged to it will log to each of the loggers in the slice.

func (MultipleOutputLogger) Log

func (mol MultipleOutputLogger) Log(keyvals ...interface{}) error

type Syncable added in v0.20.1

type Syncable interface {
	Sync() error
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL