Documentation ¶
Index ¶
- Constants
- Variables
- func DurationFormatMilliseconds(d time.Duration) interface{}
- func DurationFormatSeconds(d time.Duration) interface{}
- func DurationFormatString(d time.Duration) interface{}
- func Format(ctx context.Context, v interface{}) string
- func FormatIO(ctx context.Context, v interface{}) string
- func FormatTime(t time.Time) string
- func GetEntry(ctx context.Context) *logrus.Entry
- func IsScrubbingEnabled() bool
- func ScrubBridgeCreate(b []byte) ([]byte, error)
- func ScrubBridgeExecProcess(b []byte) ([]byte, error)
- func ScrubProcessParameters(s string) (string, error)
- func SetEntry(ctx context.Context, fields logrus.Fields) (context.Context, *logrus.Entry)
- func SetScrubbing(enable bool)
- func UpdateContext(ctx context.Context) context.Context
- func WithContext(ctx context.Context, entry *logrus.Entry) (context.Context, *logrus.Entry)
- type DurationFormat
- type Hook
- type NopFormatter
Constants ¶
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 ¶
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 )
var (
ErrUnknownType = errors.New("encoded object is of unknown type")
)
Functions ¶
func DurationFormatSeconds ¶
func DurationFormatString ¶
func Format ¶
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 ¶
FormatIO formats net.Conn and other types that have an `Addr()` or `Name()`.
See FormatEnabled for more information.
func FormatTime ¶
func GetEntry ¶
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 ¶
func IsScrubbingEnabled() bool
IsScrubbingEnabled checks if scrubbing is enabled
func ScrubBridgeCreate ¶
ScrubBridgeCreate scrubs requests sent over the bridge of type internal/gcs/protocol.containerCreate wrapping an internal/hcsoci.linuxHostedSystem
func ScrubBridgeExecProcess ¶
ScrubBridgeExecProcess scrubs requests sent over the bridge of type internal/gcs/protocol.containerExecuteProcess
func ScrubProcessParameters ¶
ScrubProcessParameters scrubs HCS Create Process requests with config parameters of type internal/hcs/schema2.ScrubProcessParameters (aka hcsshema.ScrubProcessParameters)
func SetEntry ¶
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 UpdateContext ¶
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 ¶
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 ¶
DurationFormat formats a time.Duration log entry.
A nil value signals an error with the formatting.
type Hook ¶
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.
type NopFormatter ¶
type NopFormatter struct{}