logger
packageThis package is not in the latest version of its module.
Details
Validgo.mod file
The Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable license
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Tagged version
Modules with tagged versions give importers more predictable builds.
Stable version
When a project reaches major version v1 it is considered stable.
- Learn more about best practices
Repository
Links
Documentation¶
Overview¶
Package logger defines a type for writing to logs. It's just aconvenience type so that we don't have to pass verbose func(...)types around.
Index¶
- Variables
- func AsJSON(v any) fmt.Formatter
- func Discard(string, ...any)
- func FuncWriter(f Logf) io.Writer
- func StdLogger(f Logf) *log.Logger
- type ArgWriter
- type Contextdeprecated
- type HTTPServerLogFilter
- type Logf
- func Filtered(logf Logf, allow func(s string) bool) Logf
- func FromContext(ctx Context) Logfdeprecated
- 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 SlowLoggerWithClock(ctx context.Context, logf Logf, f time.Duration, burst int, ...) Logf
- func TestLogger(tb testenv.TB) Logf
- func WithPrefix(f Logf, prefix string) Logf
Constants¶
This section is empty.
Variables¶
LogfKey stores and loadsLogf values within acontext.Context.
Functions¶
funcAsJSON¶added inv1.50.0
AsJSON returns a formatter that formats v as JSON. The value is suitable topassing to a regular %v printf argument. (%s is not required)
If json.Marshal returns an error, the output is "%%!JSON-ERROR:" followed bythe error string.
Types¶
typeArgWriter¶added inv0.98.1
ArgWriter is a fmt.Formatter that can be passed to any Logf func toefficiently write to a %v argument without allocations.
typeContextdeprecatedadded inv1.20.0
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
Deprecated: Do not use.
typeHTTPServerLogFilter¶added inv1.62.0
type HTTPServerLogFilter struct {InnerLogf}HTTPServerLogFilter is an io.Writer that can be used as thenet/http.Server.ErrorLog logger, and will filter out noisy, low-signalmessages that clutter up logs.
typeLogf¶
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.
funcFiltered¶added inv1.4.0
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.
funcFromContextdeprecatedadded inv1.20.0
funcLogOnChange¶added inv0.98.1
LogOnChange logs a given line only if line != lastLine, or if maxInterval has passedsince the last time this identical line was logged.
funcLogfCloser¶added inv1.4.0
LogfCloser wraps logf to create a logger that can be closed.Calling close makes all future calls to newLogf into no-ops.
funcRateLimitedFn¶added inv0.98.1
RateLimitedFn is a wrapper for RateLimitedFnWithClock that includes thecurrent time automatically. This is mainly for backward compatibility.
funcRateLimitedFnWithClock¶added inv1.8.0
func RateLimitedFnWithClock(logfLogf, ftime.Duration, burstint, maxCacheint, timeNow func()time.Time)Logf
RateLimitedFnWithClock returns a rate-limiting Logf wrapping the givenlogf. 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 atime. Up to maxCache format strings will be tracked separately.timeNow is a function that returns the current time, used for calculatingrate limits.
funcRusagePrefixLog¶added inv1.2.0
RusagePrefixLog returns a Logf func wrapping the provided logf func that addsa prefixed log message to each line with the current binary memory usageand max RSS.
funcSlowLoggerWithClock¶added inv1.38.0
func SlowLoggerWithClock(ctxcontext.Context, logfLogf, ftime.Duration, burstint, timeNow func()time.Time)Logf
SlowLoggerWithClock is a logger that applies rate limits similar toRateLimitedFnWithClock, but instead of dropping logs will sleep until theycan be written. This should only be used for debug logs, and not in a hot path.
The provided context, if canceled, will cause all logs to be dropped andprevent any sleeps.
funcTestLogger¶added inv1.50.0
TestLogger returns a logger that logs to tb.Logfwith a prefix to make it easier to distinguish spamfrom explicit test failures.
funcWithPrefix¶
WithPrefix wraps f, prefixing each format with the provided prefix.
func (Logf)JSON¶added inv1.22.0
JSON marshals v as JSON and writes it to logf formatted with the annotation to make logtailtreat it as a structured log.
The recType is the record type and becomes the key of the wrapperJSON object that is logged. That is, if recType is "foo" and v is123, 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 inthe logged JSON object, like {"foo":123,"v":2}.