Documentation
¶
Overview ¶
Package ledge is a generated protocol buffer package.
It is generated from these files:
ledge.proto
It has these top-level messages:
UnstructuredEvent ErrorEvent ProtoEntry
Index ¶
- Constants
- Variables
- func Debug(event Event)
- func DebugWriter(event Event) io.Writer
- func Error(event Event)
- func ErrorWriter(event Event) io.Writer
- func Fatal(event Event)
- func Info(event Event)
- func InfoWriter(event Event) io.Writer
- func Panic(event Event)
- func SetLogger(logger Logger)
- func Warn(event Event)
- func WarnWriter(event Event) io.Writer
- type BlockingEntryReader
- type Context
- type Decoder
- type Encoder
- type Entry
- type EntryReader
- type EntryReaderOptions
- type EntryResponse
- type ErrorEvent
- type Event
- type FakeLogger
- type Fields
- type Filter
- type IDAllocator
- type Level
- type Logger
- type LoggerOptions
- type Marshaller
- type ProtoEntry
- func (*ProtoEntry) Descriptor() ([]byte, []int)
- func (m *ProtoEntry) GetContextTypeNameToContext() map[string][]byte
- func (m *ProtoEntry) GetEvent() []byte
- func (m *ProtoEntry) GetEventTypeName() string
- func (m *ProtoEntry) GetId() string
- func (m *ProtoEntry) GetLevel() Level
- func (m *ProtoEntry) GetTimeUnixNsec() int64
- func (m *ProtoEntry) GetWriterOutput() []byte
- func (*ProtoEntry) ProtoMessage()
- func (m *ProtoEntry) Reset()
- func (m *ProtoEntry) String() string
- type Specification
- type TextMarshallerOptions
- type Timer
- type Unmarshaller
- type UnstructuredEvent
- type UnstructuredLogger
Constants ¶
const (
// DefaultColumns is the default number of columns to use for the V3 text marshaller.
DefaultColumns = 100
)
Variables ¶
var ( // DebugFilter is a Filter that only includes Entries with a Level of at least Level_DEBUG. DebugFilter = newLevelFilter(Level_DEBUG) // InfoFilter is a Filter that only includes Entries with a Level of at least Level_INFO. InfoFilter = newLevelFilter(Level_INFO) // WarnFilter is a Filter that only includes Entries with a Level of at least Level_WARN. WarnFilter = newLevelFilter(Level_WARN) // ErrorFilter is a Filter that only includes Entries with a Level of at least Level_ERROR. ErrorFilter = newLevelFilter(Level_ERROR) // FatalFilter is a Filter that only includes Entries with a Level of at least Level_FATAL. FatalFilter = newLevelFilter(Level_FATAL) // PanicFilter is a Filter that only includes Entries with a Level of at least Level_PANIC. PanicFilter = newLevelFilter(Level_PANIC) // JSONMarshaller is a Marshaller that marshales Entries in JSON, with shorthand // notation for Context and Entry types. It should not be used for logging intended for RPC use. JSONMarshaller = newJSONMarshaller(defaultJSONKeys) // ProtoMarshaller is a Marshaller for Protocol Buffers. It is intended for RPC use. ProtoMarshaller = protoMarshallerInstance // RPCEncoder is an Encoder that wraps data in a simple RPC format. RPCEncoder = rpcEncoderInstance // RPCDecoder is a Decoder that decodes data encoded with RPCEncoder. RPCDecoder = rpcDecoderInstance // DefaultEventTypes are the Event types included with every Logger, EntryReader, // and BlockingEntryReader by default. These are used for the UnstructuredLogger. DefaultEventTypes = []Event{ &UnstructuredEvent{}, &ErrorEvent{}, } )
var Level_name = map[int32]string{
0: "NONE",
1: "DEBUG",
2: "INFO",
3: "WARN",
4: "ERROR",
5: "FATAL",
6: "PANIC",
}
var Level_value = map[string]int32{
"NONE": 0,
"DEBUG": 1,
"INFO": 2,
"WARN": 3,
"ERROR": 4,
"FATAL": 5,
"PANIC": 6,
}
Functions ¶
func DebugWriter ¶
DebugWriter returns a new io.Writer that will log output to the writer inside the WriterOutput field of an Entry, using the associated Event, at the Debug Level.
func ErrorWriter ¶
ErrorWriter returns a new io.Writer that will log output to the writer inside the WriterOutput field of an Entry, using the associated Event, at the Error Level.
func InfoWriter ¶
InfoWriter returns a new io.Writer that will log output to the writer inside the WriterOutput field of an Entry, using the associated Event, at the Info Level.
func SetLogger ¶
func SetLogger(logger Logger)
SetLogger sets the global Logger. This must be called before any global logging calls.
func WarnWriter ¶
WarnWriter returns a new io.Writer that will log output to the writer inside the WriterOutput field of an Entry, using the associated Event, at the Warn Level.
Types ¶
type BlockingEntryReader ¶
type BlockingEntryReader interface {
// Entries returns all Entry objects in the order they were read.
Entries() ([]*Entry, error)
}
BlockingEntryReader reads Entry objects in a blocking manner until the input stream is finished.
func NewBlockingEntryReader ¶
func NewBlockingEntryReader(entryReader EntryReader) BlockingEntryReader
NewBlockingEntryReader returns a new BlockingEntryReader.
type Context ¶
type Context interface{}
A Context is attached to a Logger and included as part of every Entry a Logger outputs.
type Decoder ¶
type Decoder interface {
// Decode gets the next marshalled Entry object from the input stream.
Decode(reader *bufio.Reader) ([]byte, error)
}
Decoder decodes an input stream into separate byte slices that represent marshalled Entry objects.
type Encoder ¶
type Encoder interface {
// Encode encodes marshalled byte slices to a writer, optionally adding output.
Encode(writer io.Writer, p []byte) (int, error)
}
Encoder encodes marshalled byte slices to a writer, optionally adding output.
type Entry ¶
type Entry struct {
// ID is a unique ID that is assocated with this Entry, usually a UUID except in testing.
// This must be globally unique across multiple instances of a Logger.
ID string
// Time is the time that this Entry was logged.
Time time.Time
// Level is the Level of this entry.
Level Level
// Contexts is the contexts that were associated with the Logger when this entry was logged.
Contexts []Context
// Event is the event that was logged.
Event Event
// WriterOutput is the associated writer output, if this Entry was used for a Writer function.
// If this Entry was created from a non-Writer function, this will be nil.
WriterOutput []byte
}
Entry is the type that is marshalled and unmarshalled into and from log messages. Every log message is an Entry, including UnstructuredLogger messages.
type EntryReader ¶
type EntryReader interface {
// Channel returns a read channel of EntryResponse objects.
Channel() <-chan *EntryResponse
// Cancel cancels reading and will close the channel.
Cancel() error
}
EntryReader reads Entry objects from an input stream.
func NewEntryReader ¶
func NewEntryReader(reader io.Reader, unmarshaller Unmarshaller, decoder Decoder, options EntryReaderOptions) (EntryReader, error)
NewEntryReader returns a new EntryReader.
type EntryReaderOptions ¶
type EntryReaderOptions struct {
// Filters specifies the Filters to use.
Filters []Filter
}
EntryReaderOptions specifies the options to be used when creating an EntryReader.
type EntryResponse ¶
type EntryResponse struct {
// Entry is the Entry read.
Entry *Entry
// Error will be set if there was an error reading.
Error error
}
EntryResponse is a response from an EntryReader.
type ErrorEvent ¶
type ErrorEvent struct {
Msg string `protobuf:"bytes,1,opt,name=msg" json:"msg,omitempty"`
}
func (*ErrorEvent) Descriptor ¶
func (*ErrorEvent) Descriptor() ([]byte, []int)
func (*ErrorEvent) GetMsg ¶
func (m *ErrorEvent) GetMsg() string
func (*ErrorEvent) ProtoMessage ¶
func (*ErrorEvent) ProtoMessage()
func (*ErrorEvent) Reset ¶
func (m *ErrorEvent) Reset()
func (*ErrorEvent) String ¶
func (m *ErrorEvent) String() string
type FakeLogger ¶
type FakeLogger interface {
Logger
BlockingEntryReader
// AddTimeSec adds the specified number of seconds to the fake Timer.
AddTimeSec(int64)
// CheckEntriesEqual returns error if the expected Entry objects do not match the logged Entry objects.
CheckEntriesEqual(expected []*Entry, checkID bool, checkTime bool) error
}
FakeLogger is a Logger and BlockingEntryReader that can be used to test log output. It uses a fake IDAllocator that allocates IDs as integers, starting from 0, and a fake Timer that starts at unix time 0. Entry objects are logged to an internal buffer, which can be read using the BlockingEntryReader functionality.
func NewFakeLogger ¶
func NewFakeLogger(specification *Specification) (FakeLogger, error)
NewFakeLogger returns a new FakeLogger.
type Fields ¶
type Fields map[string]interface{}
Fields are attached to an UnstructuredLogger and included as part of every statement outputted.
type Filter ¶
type Filter interface {
// Include returns true if the Entry should be included.
Include(entry *Entry) bool
}
Filter allows filtering of Entry objects when reading or writing.
func NewRequireContextFilter ¶
NewRequireContextFilter returns a filter that only selects Entry objects with the given Context.
type IDAllocator ¶
type IDAllocator interface {
// Allocate allocates a new unique ID.
Allocate() string
}
IDAllocator allocated unique IDs for Entry structs.
type Logger ¶
type Logger interface {
// WithContext returns a new Logger with the given Context attached. If the Context
// was not registered in the Specification on Logger creation, this method will panic.
WithContext(context Context) Logger
// Unstructured returns the associated UnstructuredLogger. The methods on UnstructuredLogger
// are not directly included on Logger to discourage use of these methods.
Unstructured() UnstructuredLogger
// Debug prints an event at the Debug Level.
Debug(event Event)
// Error prints an event at the Error Level.
Error(event Event)
// Fatal prints an event at the Fatal Level.
Fatal(event Event)
// Info prints an event at the Info Level.
Info(event Event)
// Panic prints an event at the Panic Level.
Panic(event Event)
// Warn prints an event at the Warn Level.
Warn(event Event)
// DebugWriter returns a new io.Writer that will log output to the writer
// inside the WriterOutput field of an Entry, using the associated Event,
// at the Debug Level.
DebugWriter(event Event) io.Writer
// ErrorWriter returns a new io.Writer that will log output to the writer
// inside the WriterOutput field of an Entry, using the associated Event,
// at the Error Level.
ErrorWriter(event Event) io.Writer
// InfoWriter returns a new io.Writer that will log output to the writer
// inside the WriterOutput field of an Entry, using the associated Event,
// at the Info Level.
InfoWriter(event Event) io.Writer
// WarnWriter returns a new io.Writer that will log output to the writer
// inside the WriterOutput field of an Entry, using the associated Event,
// at the Warn Level.
WarnWriter(event Event) io.Writer
// ErrorEvent is a convienence method that calls Error using an ErrorEvent
// if err is not nil.
ErrorEvent(err error)
}
Logger is the main logging interface. A Logger logs Events with given Contexts as Entry objects.
func NewLogger ¶
func NewLogger(writer io.Writer, marshaller Marshaller, specification *Specification, options LoggerOptions) (Logger, error)
NewLogger creates a new Logger.
func WithContext ¶
WithContext returns a new Logger with the given Context attached. If the Context was not registered in the Specification on Logger creation, this method will panic.
type LoggerOptions ¶
type LoggerOptions struct {
// IDAllocator specifies an alternate IDAllocator to use.
// If not specified, a UUID allocator will be used.
IDAllocator IDAllocator
// Time specifies an alternate Timer to use.
// If not specification, a system Timer will be used.
Timer Timer
// Filters specifies the Filters to use.
Filters []Filter
// Encoder specifies an Encoder to use.
// If not specified, no encoder will be used and marshalled Entry objects
// will be directed printed to the Logger's io.Writer with a newline added.
Encoder Encoder
// BackupWriter specifes a backup location to write errors to if there
// are errors writing to the main io.Writer specified on Logger creation.
// Otherwise, we have a recursive problem - how do you log an error for a log error?
BackupWriter io.Writer
}
LoggerOptions specifies the options to be used when creating a Logger.
type Marshaller ¶
type Marshaller interface {
// Marshal marshals Entry objects into byte slices.
Marshal(entry *Entry) ([]byte, error)
}
Marshaller marshals Entry objects into byte slices.
func NewLogrusTextMarshaller ¶
func NewLogrusTextMarshaller(options TextMarshallerOptions) Marshaller
NewLogrusTextMarshaller returns a Marshaller that uses Logrus' TextFormatter. This should never be used if an EntryReader or BlockingEntryReader is to be used with the Entry objects.
func NewTextMarshaller ¶
func NewTextMarshaller(options TextMarshallerOptions) Marshaller
NewTextMarshaller returns a Marshaller that marshals output in a human-readable manner. This should never be used if an EntryReader or BlockingEntryReader is to be used with the Entry objects.
func NewTextMarshallerV2 ¶
func NewTextMarshallerV2(options TextMarshallerOptions) Marshaller
NewTextMarshallerV2 returns a Marshaller that marshals output in a human-readable manner. This should never be used if an EntryReader or BlockingEntryReader is to be used with the Entry objects.
func NewTextMarshallerV3 ¶
func NewTextMarshallerV3(columns int, options TextMarshallerOptions) Marshaller
NewTextMarshallerV3 returns a Marshaller that marshals output in a human-readable manner. This should never be used if an EntryReader or BlockingEntryReader is to be used with the Entry objects.
type ProtoEntry ¶
type ProtoEntry struct {
Id string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
TimeUnixNsec int64 `protobuf:"varint,2,opt,name=time_unix_nsec,json=timeUnixNsec" json:"time_unix_nsec,omitempty"`
Level Level `protobuf:"varint,3,opt,name=level,enum=ledge.Level" json:"level,omitempty"`
ContextTypeNameToContext map[string][]byte `` /* 213-byte string literal not displayed */
EventTypeName string `protobuf:"bytes,5,opt,name=event_type_name,json=eventTypeName" json:"event_type_name,omitempty"`
Event []byte `protobuf:"bytes,6,opt,name=event,proto3" json:"event,omitempty"`
WriterOutput []byte `protobuf:"bytes,7,opt,name=writer_output,json=writerOutput,proto3" json:"writer_output,omitempty"`
}
func (*ProtoEntry) Descriptor ¶
func (*ProtoEntry) Descriptor() ([]byte, []int)
func (*ProtoEntry) GetContextTypeNameToContext ¶
func (m *ProtoEntry) GetContextTypeNameToContext() map[string][]byte
func (*ProtoEntry) GetEvent ¶
func (m *ProtoEntry) GetEvent() []byte
func (*ProtoEntry) GetEventTypeName ¶
func (m *ProtoEntry) GetEventTypeName() string
func (*ProtoEntry) GetId ¶
func (m *ProtoEntry) GetId() string
func (*ProtoEntry) GetLevel ¶
func (m *ProtoEntry) GetLevel() Level
func (*ProtoEntry) GetTimeUnixNsec ¶
func (m *ProtoEntry) GetTimeUnixNsec() int64
func (*ProtoEntry) GetWriterOutput ¶
func (m *ProtoEntry) GetWriterOutput() []byte
func (*ProtoEntry) ProtoMessage ¶
func (*ProtoEntry) ProtoMessage()
func (*ProtoEntry) Reset ¶
func (m *ProtoEntry) Reset()
func (*ProtoEntry) String ¶
func (m *ProtoEntry) String() string
type Specification ¶
Specification specifies the Context and Event types that will be used with a Logger, EntryReader, or BlockingEntryReader. A type is specified using the zero value. For example, given:
type RequestId string
type FooEvent struct {
One string
}
And assuming a FooEvent is used as a pointer, the Specification should be:
var (
AppSpecifiation = &Specification{
ContextTypes: []Context{
RequestId(""),
},
EventTypes: []Event{
&FooEvent{},
},
}
)
func MergeSpecifications ¶
func MergeSpecifications(specifications ...*Specification) *Specification
MergeSpecifications merges multiple Specifications into a single specification.
type TextMarshallerOptions ¶
type TextMarshallerOptions struct {
// NoID will suppress the printing of Entry IDs.
NoID bool
// NoTime will suppress the printing of Entry times.
NoTime bool
// NoLevel will suppress the printing of Entry Levels.
NoLevel bool
// NoContexts will suppress the printing of Entry Contexts.
NoContexts bool
}
TextMarshallerOptions provides options for creating TextMarshallers.
type Unmarshaller ¶
type Unmarshaller interface {
// Unmarshal unmarshals a byte slice into an Entry.
Unmarshal(p []byte) (*Entry, error)
}
Unmarshaller unmarshals a byte slice into an Entry.
func NewProtoUnmarshaller ¶
func NewProtoUnmarshaller(specification *Specification) (Unmarshaller, error)
NewProtoUnmarshaller returns a new Unmarshaller that unmarshals Entry Objects marshalled with ProtoMarshaller.
type UnstructuredEvent ¶
type UnstructuredEvent struct {
Msg string `protobuf:"bytes,1,opt,name=msg" json:"msg,omitempty"`
}
func (*UnstructuredEvent) Descriptor ¶
func (*UnstructuredEvent) Descriptor() ([]byte, []int)
func (*UnstructuredEvent) GetMsg ¶
func (m *UnstructuredEvent) GetMsg() string
func (*UnstructuredEvent) ProtoMessage ¶
func (*UnstructuredEvent) ProtoMessage()
func (*UnstructuredEvent) Reset ¶
func (m *UnstructuredEvent) Reset()
func (*UnstructuredEvent) String ¶
func (m *UnstructuredEvent) String() string
type UnstructuredLogger ¶
type UnstructuredLogger interface {
// WithField returns a new UnstructuredLogger with the given field value.
WithField(key string, value interface{}) UnstructuredLogger
// WithField returns a new UnstructuredLogger with the given Fields.
WithFields(fields Fields) UnstructuredLogger
// Debug prints a Debug event, analogous to fmt.Sprint.
Debug(args ...interface{})
// Debugf prints a Debug event, analogous to fmt.Sprintf.
Debugf(format string, args ...interface{})
// Debugln prints a Debug event, analogous to fmt.Sprintln.
Debugln(args ...interface{})
// Error prints an Error event, analogous to fmt.Sprint.
Error(args ...interface{})
// Errorf prints an Error event, analogous to fmt.Sprintf.
Errorf(format string, args ...interface{})
// Errorln prints an Error event, analogous to fmt.Sprintln.
Errorln(args ...interface{})
// Fatal prints a Fatal event, analogous to fmt.Sprint. It then exits with os.Exit(1).
Fatal(args ...interface{})
// Fatalf prints a Fatal event, analogous to fmt.Sprintf. It then exits with os.Exit(1).
Fatalf(format string, args ...interface{})
// Fatalln prints a Fatal event, analogous to fmt.Sprintln. It then exits with os.Exit(1).
Fatalln(args ...interface{})
// Info prints an Info event, analogous to fmt.Sprint.
Info(args ...interface{})
// Infof prints an Info event, analogous to fmt.Sprintf.
Infof(format string, args ...interface{})
// Infoln prints an Info event, analogous to fmt.Sprintln.
Infoln(args ...interface{})
// Panic with a Panic event, analogous to fmt.Sprint.
Panic(args ...interface{})
// Panic with a Panic event, analogous to fmt.Sprintf.
Panicf(format string, args ...interface{})
// Panic a Panic event, analogous to fmt.Sprintln.
Panicln(args ...interface{})
// Print is an alias for Info.
Print(args ...interface{})
// Printf is an alias for Infof.
Printf(format string, args ...interface{})
// Println is an alias for Infoln.
Println(args ...interface{})
// Warn prints a Warn event, analogous to fmt.Sprint.
Warn(args ...interface{})
// Warnf prints a Warn event, analogous to fmt.Sprintf.
Warnf(format string, args ...interface{})
// Warnln prints a Warn event, analogous to fmt.Sprintln.
Warnln(args ...interface{})
// DebugWriter returns a new io.Writer that will log output to the writer
// inside the WriterOutput field of an Entry at the Debug Level.
DebugWriter() io.Writer
// ErrorWriter returns a new io.Writer that will log output to the writer
// inside the WriterOutput field of an Entry at the Error Level.
ErrorWriter() io.Writer
// InfoWriter returns a new io.Writer that will log output to the writer
// inside the WriterOutput field of an Entry at the Info Level.
InfoWriter() io.Writer
// WarnWriter returns a new io.Writer that will log output to the writer
// inside the WriterOutput field of an Entry at the Warn Level.
WarnWriter() io.Writer
}
An UnstructuredLogger allows logging without the use of typed Events. This is meant to be used for quick additional logger, for adoption, and as a replacement for Golang's standard logger. In general, if using the idioms of this library, use of UnstructuredLogger is discouraged.
func Unstructured ¶
func Unstructured() UnstructuredLogger
Unstructured returns the associated UnstructuredLogger. The methods on UnstructuredLogger are not directly included on Logger to discourage use of these methods.