log

package
v0.12.3 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2024 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const TimeFormat = "2006-01-02T15:04:05.000000000Z07:00"

TimeFormat is time.RFC3339Nano with nanoseconds padded using zeros to ensure the formatted time is always the same number of characters. Based on RFC3339NanoFixed from github.com/containerd/log

Variables

View Source
var (
	// L is the default, blank logging entry. WithField and co. all return a copy
	// of the original entry, so this will not leak fields between calls.
	//
	// Do NOT modify fields directly, as that will corrupt state for all users and
	// is not thread safe.
	// Instead, use `L.With*` or `L.Dup()`. Or `G(context.Background())`.
	L = logrus.NewEntry(logrus.StandardLogger())

	// G is an alias for GetEntry
	G = GetEntry

	// S is an alias for SetEntry
	S = SetEntry

	// U is an alias for UpdateContext
	U = UpdateContext
)
View Source
var (
	ErrUnknownType = errors.New("encoded object is of unknown type")
)

Functions

func Copy added in v0.10.0

Copy extracts the tracing Span and logging entry from the src Context, if they exist, and adds them to the dst Context.

This is useful to share tracing and logging between contexts, but not the cancellation. For example, if the src Context has been cancelled but cleanup operations triggered by the cancellation require a non-cancelled context to execute.

func DurationFormatMilliseconds added in v0.10.0

func DurationFormatMilliseconds(d time.Duration) interface{}

func DurationFormatSeconds added in v0.10.0

func DurationFormatSeconds(d time.Duration) interface{}

func DurationFormatString added in v0.10.0

func DurationFormatString(d time.Duration) interface{}

func Format added in v0.10.0

func Format(ctx context.Context, v interface{}) string

Format formats an object into a JSON string, without any indendtation or HTML escapes. Context is used to output a log waring if the conversion fails.

This is intended primarily for `trace.StringAttribute()`

func FormatIO added in v0.10.0

func FormatIO(ctx context.Context, v interface{}) string

FormatIO formats net.Conn and other types that have an `Addr()` or `Name()`.

See FormatEnabled for more information.

func FormatTime added in v0.10.0

func FormatTime(t time.Time) string

func GetEntry added in v0.10.0

func GetEntry(ctx context.Context) *logrus.Entry

GetEntry returns a `logrus.Entry` stored in the context, if one exists. Otherwise, it returns a default entry that points to the current context.

Note: if the a new entry is returned, it will reference the passed in context. However, existing contexts may be stored in parent contexts and additionally reference earlier contexts. Use `UpdateContext` to update the entry and context.

func IsScrubbingEnabled added in v0.10.0

func IsScrubbingEnabled() bool

IsScrubbingEnabled checks if scrubbing is enabled

func ScrubBridgeCreate added in v0.10.0

func ScrubBridgeCreate(b []byte) ([]byte, error)

ScrubBridgeCreate scrubs requests sent over the bridge of type internal/gcs/protocol.containerCreate wrapping an internal/hcsoci.linuxHostedSystem

func ScrubBridgeExecProcess added in v0.10.0

func ScrubBridgeExecProcess(b []byte) ([]byte, error)

ScrubBridgeExecProcess scrubs requests sent over the bridge of type internal/gcs/protocol.containerExecuteProcess

func ScrubProcessParameters added in v0.10.0

func ScrubProcessParameters(s string) (string, error)

ScrubProcessParameters scrubs HCS Create Process requests with config parameters of type internal/hcs/schema2.ScrubProcessParameters (aka hcsshema.ScrubProcessParameters)

func SetEntry added in v0.10.0

func SetEntry(ctx context.Context, fields logrus.Fields) (context.Context, *logrus.Entry)

SetEntry updates the log entry in the context with the provided fields, and returns both. It is equivalent to:

entry := GetEntry(ctx).WithFields(fields)
ctx = WithContext(ctx, entry)

See WithContext for more information.

func SetScrubbing added in v0.10.0

func SetScrubbing(enable bool)

SetScrubbing enables scrubbing

func UpdateContext added in v0.10.0

func UpdateContext(ctx context.Context) context.Context

UpdateContext extracts the log entry from the context, and, if the entry's context points to a parent's of the current context, ands the entry to the most recent context. It is equivalent to:

entry := GetEntry(ctx)
ctx = WithContext(ctx, entry)

This allows the entry to reference the most recent context and any new values (such as span contexts) added to it.

See WithContext for more information.

func WithContext added in v0.10.0

func WithContext(ctx context.Context, entry *logrus.Entry) (context.Context, *logrus.Entry)

WithContext returns a context that contains the provided log entry. The entry can be extracted with `GetEntry` (`G`)

The entry in the context is a copy of `entry` (generated by `entry.WithContext`)

Types

type DurationFormat added in v0.10.0

type DurationFormat func(time.Duration) interface{}

DurationFormat formats a time.Duration log entry.

A nil value signals an error with the formatting.

type Hook added in v0.10.0

type Hook struct {
	// EncodeAsJSON formats structs, maps, arrays, slices, and [bytes.Buffer] as JSON.
	// Variables of [bytes.Buffer] will be converted to []byte.
	//
	// Default is false.
	EncodeAsJSON bool

	// FormatTime specifies the format for [time.Time] variables.
	// An empty string disables formatting.
	// When disabled, the fall back will the JSON encoding, if enabled.
	//
	// Default is [TimeFormat].
	TimeFormat string

	// Duration format converts a [time.Duration] fields to an appropriate encoding.
	// nil disables formatting.
	// When disabled, the fall back will the JSON encoding, if enabled.
	//
	// Default is [DurationFormatString], which appends a duration unit after the value.
	DurationFormat DurationFormat

	// AddSpanContext adds [logfields.TraceID] and [logfields.SpanID] fields to
	// the entry from the span context stored in [logrus.Entry.Context], if it exists.
	AddSpanContext bool
}

Hook intercepts and formats a logrus.Entry before it logged.

The shim either outputs the logs through an ETW hook, discarding the (formatted) output or logs output to a pipe for logging binaries to consume. The Linux GCS outputs logrus entries over stdout, which is then consumed and re-output by the shim.

func NewHook added in v0.10.0

func NewHook() *Hook

func (*Hook) Fire added in v0.10.0

func (h *Hook) Fire(e *logrus.Entry) (err error)

func (*Hook) Levels added in v0.10.0

func (h *Hook) Levels() []logrus.Level

type NopFormatter added in v0.12.0

type NopFormatter struct{}

func (NopFormatter) Format added in v0.12.0

func (NopFormatter) Format(*logrus.Entry) ([]byte, error)

Format does nothing and returns a nil slice.

Jump to

Keyboard shortcuts

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