Documentation
¶
Index ¶
- Variables
- func HasTerminal(w io.Writer) bool
- func POFieldIndent(indent int) poFieldIndent
- func POLevel(visible bool) poLevel
- func POTime(visible bool) poTime
- func POTransientLineLength(cols int) poTransientLineLength
- func RemoveAnchor(log Logger)
- type AnchorAdder
- type AnchorRemover
- type AnchoredLogger
- func (l *AnchoredLogger) Close()
- func (l *AnchoredLogger) Error(msg string, fields ...Fielder) Logger
- func (l *AnchoredLogger) Info(msg string, fields ...Fielder) Logger
- func (l *AnchoredLogger) LogImpl(anchoredLine int32, opts []PrinterOption, level Level, msg string, ...)
- func (l *AnchoredLogger) Parent() Logger
- func (l *AnchoredLogger) RemoveAnchor()
- func (l *AnchoredLogger) SetMinLevel(level Level) Logger
- func (l *AnchoredLogger) Transient(msg string, fields ...Fielder) Logger
- func (l *AnchoredLogger) Verbose(msg string, fields ...Fielder) Logger
- func (l *AnchoredLogger) Warning(msg string, fields ...Fielder) Logger
- type Buffered
- func (l *Buffered) AddAnchor(parent Logger) Logger
- func (l *Buffered) Close()
- func (l *Buffered) Error(msg string, fields ...Fielder) Logger
- func (l *Buffered) Info(msg string, fields ...Fielder) Logger
- func (l *Buffered) LogImpl(anchoredLine int32, opts []PrinterOption, level Level, msg string, ...)
- func (l *Buffered) SetMinLevel(level Level) Logger
- func (l *Buffered) Transient(msg string, fields ...Fielder) Logger
- func (l *Buffered) Verbose(msg string, fields ...Fielder) Logger
- func (l *Buffered) Warning(msg string, fields ...Fielder) Logger
- type ChildLogger
- type CustomizerLogger
- func (l *CustomizerLogger) Close()
- func (l *CustomizerLogger) Error(msg string, fields ...Fielder) Logger
- func (l *CustomizerLogger) Info(msg string, fields ...Fielder) Logger
- func (l *CustomizerLogger) LogImpl(anchoredLine int32, opts []PrinterOption, level Level, msg string, ...)
- func (l *CustomizerLogger) Parent() Logger
- func (l *CustomizerLogger) SetMinLevel(level Level) Logger
- func (l *CustomizerLogger) Transient(msg string, fields ...Fielder) Logger
- func (l *CustomizerLogger) Verbose(msg string, fields ...Fielder) Logger
- func (l *CustomizerLogger) Warning(msg string, fields ...Fielder) Logger
- type Field
- type FieldBool
- type FieldDuration
- type FieldError
- type FieldFloat64
- type FieldInt64
- type FieldString
- type FieldTimeFormat
- type FieldTimeUnix
- type FieldUint64
- type Fielder
- type JSONPrinter
- type Level
- type Logger
- func AddAnchor(log Logger) Logger
- func New(t NewLogger, opts ...PrinterOption) Logger
- func Parent(log Logger) Logger
- func WithFields(log Logger, fields ...Fielder) Logger
- func WithOptions(log Logger, opts ...PrinterOption) Logger
- func WithOptionsAndFields(log Logger, opts []PrinterOption, fields []Fielder) Logger
- type NewLogger
- type NullLogger
- func (n *NullLogger) Close()
- func (n *NullLogger) Error(format string, a ...Fielder) Logger
- func (n *NullLogger) Info(format string, a ...Fielder) Logger
- func (n *NullLogger) LogImpl(anchoredLine int32, opts []PrinterOption, level Level, msg string, ...)
- func (n *NullLogger) SetMinLevel(level Level) Logger
- func (n *NullLogger) Transient(format string, a ...Fielder) Logger
- func (n *NullLogger) Verbose(format string, a ...Fielder) Logger
- func (n *NullLogger) Warning(format string, a ...Fielder) Logger
- type Palette
- type Printer
- type PrinterOption
- type TeeLogger
- func (l *TeeLogger) Close()
- func (l *TeeLogger) Error(msg string, fields ...Fielder) Logger
- func (l *TeeLogger) Info(msg string, fields ...Fielder) Logger
- func (l *TeeLogger) LogImpl(anchoredLine int32, opts []PrinterOption, level Level, msg string, ...)
- func (l *TeeLogger) Parent() Logger
- func (l *TeeLogger) SetMinLevel(level Level) Logger
- func (l *TeeLogger) Transient(msg string, fields ...Fielder) Logger
- func (l *TeeLogger) Verbose(msg string, fields ...Fielder) Logger
- func (l *TeeLogger) Warning(msg string, fields ...Fielder) Logger
- type TextPrinter
- type Unbuffered
- func (l *Unbuffered) Close()
- func (l *Unbuffered) Error(msg string, fields ...Fielder) Logger
- func (l *Unbuffered) Info(msg string, fields ...Fielder) Logger
- func (l *Unbuffered) LogImpl(anchoredLine int32, opts []PrinterOption, level Level, msg string, ...)
- func (l *Unbuffered) SetMinLevel(level Level) Logger
- func (l *Unbuffered) Transient(msg string, fields ...Fielder) Logger
- func (l *Unbuffered) Verbose(msg string, fields ...Fielder) Logger
- func (l *Unbuffered) Warning(msg string, fields ...Fielder) Logger
Constants ¶
This section is empty.
Variables ¶
var POFieldsLeftMsgRight poFieldsLeftMsgRight
var POMsgLeftFieldsRight poMsgLeftFieldsRight
Functions ¶
func HasTerminal ¶ added in v0.4.1
HasTerminal returns true if the passed writer is connected to a terminal
func POFieldIndent ¶ added in v0.8.0
func POFieldIndent(indent int) poFieldIndent
func POTransientLineLength ¶ added in v0.8.4
func POTransientLineLength(cols int) poTransientLineLength
func RemoveAnchor ¶ added in v0.7.1
func RemoveAnchor(log Logger)
RemoveAnchor needs to be passed the logger that was returned by AddAnchor. It can also work by being passed a child.
Types ¶
type AnchorAdder ¶ added in v0.7.1
AnchorAdder is the interface for loggers that support anchoring a line to the bottom of the output, for progress bars or other transient status messages.
type AnchorRemover ¶ added in v0.7.1
type AnchorRemover interface {
RemoveAnchor()
}
AnchorRemover is the interface that an anchor logger must implement in order for the anchor to be removed before app end.
type AnchoredLogger ¶ added in v0.7.1
type AnchoredLogger struct {
// contains filtered or unexported fields
}
AnchoredLogger is a Logger that treats Transient level log data in a special way: - Transient level is never ignored, and always overwrites the same output line. - Non-Transient level is sent to the parent logger.
func (*AnchoredLogger) Close ¶ added in v0.7.1
func (l *AnchoredLogger) Close()
func (*AnchoredLogger) Error ¶ added in v0.7.1
func (l *AnchoredLogger) Error(msg string, fields ...Fielder) Logger
func (*AnchoredLogger) Info ¶ added in v0.7.1
func (l *AnchoredLogger) Info(msg string, fields ...Fielder) Logger
func (*AnchoredLogger) LogImpl ¶ added in v0.9.0
func (l *AnchoredLogger) LogImpl(anchoredLine int32, opts []PrinterOption, level Level, msg string, fields []Fielder)
LogImpl has to handle log requests from this package and from any children The value of the anchoredLine argument is ignored in favor of the line we store internally.
func (*AnchoredLogger) Parent ¶ added in v0.7.1
func (l *AnchoredLogger) Parent() Logger
func (*AnchoredLogger) RemoveAnchor ¶ added in v0.7.1
func (l *AnchoredLogger) RemoveAnchor()
func (*AnchoredLogger) SetMinLevel ¶ added in v0.7.1
func (l *AnchoredLogger) SetMinLevel(level Level) Logger
func (*AnchoredLogger) Transient ¶ added in v0.7.1
func (l *AnchoredLogger) Transient(msg string, fields ...Fielder) Logger
type Buffered ¶
type Buffered struct {
// contains filtered or unexported fields
}
func (*Buffered) AddAnchor ¶ added in v0.7.1
AddAnchor creates a Logger that is "achored" to the bottom of the output. This "anchoring" is achieved by using ANSI to re-draw the anchored line at the bottom as the output scrolls up. Thread safe.
func (*Buffered) Close ¶
func (l *Buffered) Close()
Close should be called before the app exits, to ensure any buffered output is flushed. Thread safe.
func (*Buffered) SetMinLevel ¶
type ChildLogger ¶ added in v0.2.0
type ChildLogger interface {
// Parent returns the parent Logger, or nil if it has no parent.
Parent() Logger
}
ChildLogger is the interface for loggers that feed back to a parent.
type CustomizerLogger ¶ added in v0.8.0
type CustomizerLogger struct {
// contains filtered or unexported fields
}
CustomizerLogger is a Logger that adds specific fields and/or sets specific printer options for each line it logs
func (*CustomizerLogger) Close ¶ added in v0.8.0
func (l *CustomizerLogger) Close()
func (*CustomizerLogger) Error ¶ added in v0.8.0
func (l *CustomizerLogger) Error(msg string, fields ...Fielder) Logger
func (*CustomizerLogger) Info ¶ added in v0.8.0
func (l *CustomizerLogger) Info(msg string, fields ...Fielder) Logger
func (*CustomizerLogger) LogImpl ¶ added in v0.9.0
func (l *CustomizerLogger) LogImpl(anchoredLine int32, opts []PrinterOption, level Level, msg string, fields []Fielder)
func (*CustomizerLogger) Parent ¶ added in v0.8.0
func (l *CustomizerLogger) Parent() Logger
func (*CustomizerLogger) SetMinLevel ¶ added in v0.8.0
func (l *CustomizerLogger) SetMinLevel(level Level) Logger
func (*CustomizerLogger) Transient ¶ added in v0.8.0
func (l *CustomizerLogger) Transient(msg string, fields ...Fielder) Logger
type FieldBool ¶ added in v0.4.0
type FieldDuration ¶ added in v0.4.0
func Dur ¶ added in v0.4.0
func Dur(name string, value time.Duration) FieldDuration
Dur adds a time.Duration field
func Duration ¶ added in v0.4.0
func Duration(name string, value time.Duration) FieldDuration
Duration adds a time.Duration field
func (FieldDuration) Field ¶ added in v0.4.0
func (f FieldDuration) Field() Field
type FieldError ¶ added in v0.4.0
func (FieldError) Field ¶ added in v0.4.0
func (f FieldError) Field() Field
type FieldFloat64 ¶ added in v0.4.0
func Float32 ¶ added in v0.4.0
func Float32(name string, value float32) FieldFloat64
Float32 adds a 32-bit floating point number field
func Float64 ¶ added in v0.4.0
func Float64(name string, value float64) FieldFloat64
Float64 adds a 64-bit floating point number field
func (FieldFloat64) Field ¶ added in v0.4.0
func (f FieldFloat64) Field() Field
type FieldInt64 ¶ added in v0.4.0
func Int ¶ added in v0.4.0
func Int(name string, value int) FieldInt64
Int adds a signed integer field
func Int8 ¶ added in v0.4.0
func Int8(name string, value int8) FieldInt64
Int8 adds an 8-bit signed integer field
func Int16 ¶ added in v0.4.0
func Int16(name string, value int16) FieldInt64
Int16 adds a 16-bit signed integer field
func Int32 ¶ added in v0.4.0
func Int32(name string, value int32) FieldInt64
Int32 adds a 32-bit signed integer field
func Int64 ¶ added in v0.4.0
func Int64(name string, value int64) FieldInt64
Int64 adds a 64-bit signed integer field
func (FieldInt64) Field ¶ added in v0.4.0
func (f FieldInt64) Field() Field
type FieldString ¶ added in v0.4.0
func String ¶ added in v0.4.0
func String(name string, value string) FieldString
String adds an escaped and quoted string field
func (FieldString) Field ¶ added in v0.4.0
func (f FieldString) Field() Field
type FieldTimeFormat ¶ added in v0.4.0
func Time ¶ added in v0.4.0
func Time(name string, value time.Time) FieldTimeFormat
Time adds a time.Time field that will output a string formatted using RFC 3339 (ISO 8601)
func TimeNano ¶ added in v0.4.0
func TimeNano(name string, value time.Time) FieldTimeFormat
TimeNano adds a time.Time field that will output a string formatted using RFC 3339 with nanosecond precision
func (FieldTimeFormat) Field ¶ added in v0.4.0
func (f FieldTimeFormat) Field() Field
type FieldTimeUnix ¶ added in v0.4.0
func TimeUnix ¶ added in v0.4.0
func TimeUnix(name string, value time.Time) FieldTimeUnix
TimeUnix adds a time.Time field that outputs as a unix epoch (unsigned integer)
func TimeUnixNano ¶ added in v0.4.0
func TimeUnixNano(name string, value time.Time) FieldTimeUnix
TimeUnixNano adds a time.Time field that outputs as a unix epoch with nanosecond precision (unsigned integer)
func (FieldTimeUnix) Field ¶ added in v0.4.0
func (f FieldTimeUnix) Field() Field
type FieldUint64 ¶ added in v0.4.0
func Byte ¶ added in v0.4.0
func Byte(name string, value byte) FieldUint64
Byte adds an 8-bit unsigned integer field
func Uint ¶ added in v0.4.0
func Uint(name string, value uint) FieldUint64
Uint adds an unsigned integer field
func Uint8 ¶ added in v0.4.0
func Uint8(name string, value uint8) FieldUint64
Uint8 adds an 8-bit unsigned integer field
func Uint16 ¶ added in v0.4.0
func Uint16(name string, value uint16) FieldUint64
Uint16 adds a 16-bit unsigned integer field
func Uint32 ¶ added in v0.4.0
func Uint32(name string, value uint32) FieldUint64
Uint32 adds a 32-bit unsigned integer field
func Uint64 ¶ added in v0.4.0
func Uint64(name string, value uint64) FieldUint64
Uint64 adds a 64-bit unsigned integer field
func (FieldUint64) Field ¶ added in v0.4.0
func (f FieldUint64) Field() Field
type Fielder ¶ added in v0.4.0
type Fielder interface {
Field() Field
}
Fielder is an interface used to add structured logging to calls to Logger methods
type JSONPrinter ¶ added in v0.2.1
func (*JSONPrinter) Render ¶ added in v0.2.1
func (p *JSONPrinter) Render(level Level, opts []PrinterOption, msg string, fields []Fielder) string
func (*JSONPrinter) SetOptions ¶ added in v0.8.0
func (p *JSONPrinter) SetOptions(opts ...PrinterOption) Printer
type Logger ¶
type Logger interface {
// Close ensures any buffers are flushed and any resources released.
// It is safe to call Close more than once (but consecutive calls do nothing).
Close()
// SetMinLevel sets the lowest Level that will be logged.
SetMinLevel(level Level) Logger
// LogImpl is how all log lines are added.
// TODO: hide stuff like anchoredLine behind an interface?
LogImpl(anchoredLine int32, opts []PrinterOption, level Level, msg string, fields []Fielder)
// Transient and the rest all log a string (with optional fields) at a specific level.
Transient(msg string, fields ...Fielder) Logger
Verbose(msg string, fields ...Fielder) Logger
Info(msg string, fields ...Fielder) Logger
Warning(msg string, fields ...Fielder) Logger
Error(msg string, fields ...Fielder) Logger
}
func AddAnchor ¶ added in v0.7.1
AddAnchor adds a new logger on an anchored line (if supported). Else, returns passed in Logger.
func New ¶
func New(t NewLogger, opts ...PrinterOption) Logger
New creates a Logger that writes to os.Stdout, depending on the NewLogger type passed to it: - Auto - if terminal detected on stdout, then colors and anchored lines are supported (else, uses Basic) - Basic - no colors or anchored lines, no buffering - JSON - no colors or anchored lines, no buffering, and each line is a valid JSON object Resulting Logger can be modified by including 1 or more NewOpts after the NewLogger type. The caller is responsible for calling Close() when done with the returned Logger.
func WithFields ¶ added in v0.8.0
WithFields creates a new Logger that will always include the specified fields
func WithOptions ¶ added in v0.8.0
func WithOptions(log Logger, opts ...PrinterOption) Logger
WithOptions creates a new Logger that will always include the specified options
func WithOptionsAndFields ¶ added in v0.8.0
func WithOptionsAndFields(log Logger, opts []PrinterOption, fields []Fielder) Logger
WithOptionsAndFields creates a new Logger that will always include the specified fields and options
type NullLogger ¶ added in v0.6.0
type NullLogger struct {
}
func (*NullLogger) Close ¶ added in v0.6.0
func (n *NullLogger) Close()
func (*NullLogger) Error ¶ added in v0.6.0
func (n *NullLogger) Error(format string, a ...Fielder) Logger
func (*NullLogger) Info ¶ added in v0.6.0
func (n *NullLogger) Info(format string, a ...Fielder) Logger
func (*NullLogger) LogImpl ¶ added in v0.9.0
func (n *NullLogger) LogImpl(anchoredLine int32, opts []PrinterOption, level Level, msg string, fields []Fielder)
func (*NullLogger) SetMinLevel ¶ added in v0.6.0
func (n *NullLogger) SetMinLevel(level Level) Logger
func (*NullLogger) Transient ¶ added in v0.6.0
func (n *NullLogger) Transient(format string, a ...Fielder) Logger
type Printer ¶
type Printer interface {
Render(Level, []PrinterOption, string, []Fielder) string
SetOptions(...PrinterOption) Printer
}
type PrinterOption ¶ added in v0.8.0
type PrinterOption interface {
String() string
// contains filtered or unexported methods
}
func POPalette ¶ added in v0.8.0
func POPalette(pal Palette) PrinterOption
type TeeLogger ¶ added in v0.2.0
type TeeLogger struct {
Primary Logger // Anchors are only supported though this logger
Secondary Logger
}
TeeLogger directs all traffic to both a primary and secondary logger Note that of if one of your loggers supports anchor, make sure that is the Primary anchor.
func (*TeeLogger) SetMinLevel ¶ added in v0.2.0
type TextPrinter ¶ added in v0.2.1
type TextPrinter struct {
Palette Palette
PrintTime bool
PrintLevel bool
// FieldIndent controls where the first field begins rendering, compared to the message.
// Note that the first field will always be at least 3 spaces from the end of the message,
// and always be aligned with an offset that is a multiple of 5
// For example:
// [nfo] a long message that overflows the first field indent fieldIndent=40
// [nfo] short message fieldIndent=40
// [nfo] short message fieldIndent=30
// [nfo] short message fieldIndent=20
// [nfo] short message fieldIndent=10
// [nfo] short fieldIndent=10
// [nfo] short fieldIndent=0
// [nfo] sh fieldIndent=0
FieldIndent int
// PrintMessageLast will cause the message to display after the fields, instead of before
// For example:
// [nfo] fieldIndent=40 short message
// [nfo] fieldIndent=10 something a long message that overflows the first field indent
PrintMessageLast bool
// TransientLineLength is used to crop anchored lines, to avoid having them overflow into a second line.
// A value of 0 means no cropping will occur. If an anchored line ends up being wider than the terminal,
// it will wrap, which will throw off the formatting and scramble the output.
TransientLineLength int
}
func (*TextPrinter) Render ¶ added in v0.2.1
func (p *TextPrinter) Render(level Level, opts []PrinterOption, msg string, fields []Fielder) string
func (*TextPrinter) SetOptions ¶ added in v0.8.0
func (p *TextPrinter) SetOptions(opts ...PrinterOption) Printer
type Unbuffered ¶ added in v0.2.0
type Unbuffered struct {
// contains filtered or unexported fields
}
func NewUnbuffered ¶ added in v0.2.0
func NewUnbuffered(writer io.Writer, prn Printer) *Unbuffered
func (*Unbuffered) Close ¶ added in v0.2.0
func (l *Unbuffered) Close()
func (*Unbuffered) Error ¶ added in v0.4.0
func (l *Unbuffered) Error(msg string, fields ...Fielder) Logger
func (*Unbuffered) Info ¶ added in v0.4.0
func (l *Unbuffered) Info(msg string, fields ...Fielder) Logger
func (*Unbuffered) LogImpl ¶ added in v0.9.0
func (l *Unbuffered) LogImpl(anchoredLine int32, opts []PrinterOption, level Level, msg string, fields []Fielder)
func (*Unbuffered) SetMinLevel ¶ added in v0.2.0
func (l *Unbuffered) SetMinLevel(level Level) Logger
func (*Unbuffered) Transient ¶ added in v0.4.0
func (l *Unbuffered) Transient(msg string, fields ...Fielder) Logger
