Documentation ¶
Overview ¶
Package logger defines a type for writing to logs. It's just a convenience type so that we don't have to pass verbose func(...) types around.
Index ¶
- func Discard(string, ...any)
- func FuncWriter(f Logf) io.Writer
- func StdLogger(f Logf) *log.Logger
- type ArgWriter
- type Context
- type Logf
- func Filtered(logf Logf, allow func(s string) bool) Logf
- func FromContext(ctx Context) Logf
- func LogOnChange(logf Logf, maxInterval time.Duration, timeNow func() time.Time) Logf
- func LogfCloser(logf Logf) (newLogf Logf, close func())
- func RateLimitedFn(logf Logf, f time.Duration, burst int, maxCache int) Logf
- func RateLimitedFnWithClock(logf Logf, f time.Duration, burst int, maxCache int, timeNow func() time.Time) Logf
- func RusagePrefixLog(logf Logf) Logf
- func WithPrefix(f Logf, prefix string) Logf
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FuncWriter ¶
FuncWriter returns an io.Writer that writes to f.
Types ¶
type ArgWriter ¶
ArgWriter is a fmt.Formatter that can be passed to any Logf func to efficiently write to a %v argument without allocations.
type Context ¶
A Context is a context.Context that should contain a custom log function, obtainable from FromContext. If no log function is present, FromContext will return log.Printf. To construct a Context, use Add
type Logf ¶
Logf is the basic Tailscale logger type: a printf-like func. Like log.Printf, the format need not end in a newline. Logf functions must be safe for concurrent use.
func Filtered ¶
Filtered returns a Logf that silently swallows some log lines. Each inbound format and args is evaluated and printed to a string s. The original format and args are passed to logf if and only if allow(s) returns true.
func LogOnChange ¶
LogOnChange logs a given line only if line != lastLine, or if maxInterval has passed since the last time this identical line was logged.
func LogfCloser ¶
LogfCloser wraps logf to create a logger that can be closed. Calling close makes all future calls to newLogf into no-ops.
func RateLimitedFn ¶
RateLimitedFn is a wrapper for RateLimitedFnWithClock that includes the current time automatically. This is mainly for backward compatibility.
func RateLimitedFnWithClock ¶
func RateLimitedFnWithClock(logf Logf, f time.Duration, burst int, maxCache int, timeNow func() time.Time) Logf
RateLimitedFnWithClock returns a rate-limiting Logf wrapping the given logf. Messages are allowed through at a maximum of one message every f (where f is a time.Duration), in bursts of up to burst messages at a time. Up to maxCache format strings will be tracked separately. timeNow is a function that returns the current time, used for calculating rate limits.
func RusagePrefixLog ¶
RusagePrefixLog returns a Logf func wrapping the provided logf func that adds a prefixed log message to each line with the current binary memory usage and max RSS.
func WithPrefix ¶
WithPrefix wraps f, prefixing each format with the provided prefix.
func (Logf) JSON ¶
JSON marshals v as JSON and writes it to logf formatted with the annotation to make logtail treat it as a structured log.
The recType is the record type and becomes the key of the wrapper JSON object that is logged. That is, if recType is "foo" and v is 123, the value logged is {"foo":123}.
Do not use recType "logtail", "v", "text", or "metrics", with any case. Those are reserved for the logging system.
The level can be from 0 to 9. Levels from 1 to 9 are included in the logged JSON object, like {"foo":123,"v":2}.