lager

package module
v3.17.0 Latest Latest
Warning

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

Go to latest
Published: Dec 3, 2024 License: Apache-2.0 Imports: 16 Imported by: 702

README

lager

Go Report Card Go Reference

Lager is a logging library for go

[!NOTE]

This repository should be imported as code.cloudfoundry.org/lager/v3.

Docs

Contributing

See the Contributing.md for more information on how to contribute.

Working Group Charter

This repository is maintained by App Runtime Platform under Diego area.

[!IMPORTANT]

Content in this file is managed by the CI task sync-readme and is generated by CI following a convention.

Documentation

Index

Constants

View Source
const (
	StackTraceBufferSize = 1024 * 100
	RequestIdHeader      = "X-Vcap-Request-Id"
)

Variables

This section is empty.

Functions

func DefaultValuePatterns

func DefaultValuePatterns() []string

func NewHandler added in v3.0.3

func NewHandler(l Logger) slog.Handler

NewHandler wraps the logger as a slog.Handler The supplied Logger must be a lager.logger type created by lager.NewLogger(), otherwise it panics.

Note the following log level conversions:

slog.LevelDebug -> lager.DEBUG
slog.LevelError -> lager.ERROR
slog.LevelError -> lager.FATAL
default         -> lager.INFO

Types

type Data

type Data map[string]interface{}

type JSONRedacter

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

func NewJSONRedacter

func NewJSONRedacter(keyPatterns []string, valuePatterns []string) (*JSONRedacter, error)

func (JSONRedacter) Redact

func (r JSONRedacter) Redact(data []byte) []byte

type LogFormat

type LogFormat struct {
	Timestamp string   `json:"timestamp"`
	Source    string   `json:"source"`
	Message   string   `json:"message"`
	LogLevel  LogLevel `json:"log_level"`
	Data      Data     `json:"data"`
	Error     error    `json:"-"`
	// contains filtered or unexported fields
}

func (LogFormat) ToJSON

func (log LogFormat) ToJSON() []byte

type LogLevel

type LogLevel int
const (
	DEBUG LogLevel = iota
	INFO
	ERROR
	FATAL
)

func LogLevelFromString

func LogLevelFromString(s string) (LogLevel, error)

func (LogLevel) String

func (l LogLevel) String() string

type Logger

type Logger interface {
	RegisterSink(Sink)
	Session(task string, data ...Data) Logger
	SessionName() string
	Debug(action string, data ...Data)
	Info(action string, data ...Data)
	Error(action string, err error, data ...Data)
	Fatal(action string, err error, data ...Data)
	WithData(Data) Logger
	WithTraceInfo(*http.Request) Logger
}

func NewLogger

func NewLogger(component string) Logger

type ReconfigurableSink

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

func NewReconfigurableSink

func NewReconfigurableSink(sink Sink, initialMinLogLevel LogLevel) *ReconfigurableSink

func (*ReconfigurableSink) GetMinLevel

func (sink *ReconfigurableSink) GetMinLevel() LogLevel

func (*ReconfigurableSink) Log

func (sink *ReconfigurableSink) Log(log LogFormat)

func (*ReconfigurableSink) SetMinLevel

func (sink *ReconfigurableSink) SetMinLevel(level LogLevel)

type Sink

type Sink interface {
	//Log to the sink.  Best effort -- no need to worry about errors.
	Log(LogFormat)
}

A Sink represents a write destination for a Logger. It provides a thread-safe interface for writing logs

func NewPrettySink

func NewPrettySink(writer io.Writer, minLogLevel LogLevel) Sink

func NewRedactingSink

func NewRedactingSink(sink Sink, keyPatterns []string, valuePatterns []string) (Sink, error)

NewRedactingSink creates a sink that redacts sensitive information from the data field. The old behavior of NewRedactingWriterSink (which was removed in v2) can be obtained using the following code:

redactingSink, err := NewRedactingSink(
	NewWriterSink(writer, minLogLevel),
	keyPatterns,
	valuePatterns,
)

if err != nil {
	return nil, err
}

return NewReconfigurableSink(
	redactingSink,
	minLogLevel,
), nil

func NewSlogSink added in v3.0.3

func NewSlogSink(l *slog.Logger) Sink

NewSlogSink wraps a slog.Logger as a lager Sink This allows code using slog to integrate with code that uses lager Note the following log level conversions:

lager.DEBUG -> slog.LevelDebug
lager.ERROR -> slog.LevelError
lager.FATAL -> slog.LevelError
default     -> slog.LevelInfo

func NewTruncatingSink

func NewTruncatingSink(sink Sink, maxDataStringLength int) Sink

NewTruncatingSink returns a sink that truncates strings longer than the max data string length Example:

writerSink := lager.NewWriterSink(os.Stdout, lager.INFO)
sink := lager.NewTruncatingSink(testSink, 20)
logger := lager.NewLogger("test")
logger.RegisterSink(sink)
logger.Info("message", lager.Data{"A": strings.Repeat("a", 25)})

func NewWriterSink

func NewWriterSink(writer io.Writer, minLogLevel LogLevel) Sink

Directories

Path Synopsis
internal
Package lagerctx provides convenience when using Lager with the context feature of the standard library.
Package lagerctx provides convenience when using Lager with the context feature of the standard library.

Jump to

Keyboard shortcuts

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