Documentation ¶
Index ¶
- func ContextWithValue(ctx context.Context, traceID string) context.Context
- func Debug() *zerolog.Event
- func Error() *zerolog.Event
- func Info() *zerolog.Event
- func NewLogLogger(mode string, level string, options ...Option)
- func NewTraceContext(ctx context.Context) context.Context
- func NewTraceID() string
- func TraceIDFromContext(ctx context.Context) string
- func Warn() *zerolog.Event
- type Level
- type LevelVar
- type Leveler
- type LogMode
- type Logger
- type Option
- type Options
- type TraceHook
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ContextWithValue ¶ added in v0.2.0
ContextWithValue 将 trace_id 添加到上下文
func NewLogLogger ¶
func NewTraceContext ¶ added in v0.2.0
NewTraceContext 创建一个新的带有 trace_id 的上下文
func TraceIDFromContext ¶ added in v0.5.0
TraceIDFromContext 从上下文中获取 trace_id
Types ¶
type Level ¶
type Level int
A Level is the importance or severity of a log event. The higher the level, the more important or severe the event.
Names for common levels.
Level numbers are inherently arbitrary, but we picked them to satisfy three constraints. Any system can map them to another numbering scheme if it wishes.
First, we wanted the default level to be Info, Since Levels are ints, Info is the default value for int, zero.
Second, we wanted to make it easy to use levels to specify logger verbosity. Since a larger level means a more severe event, a logger that accepts events with smaller (or more negative) level means a more verbose logger. Logger verbosity is thus the negation of event severity, and the default verbosity of 0 accepts all events at least as severe as INFO.
Third, we wanted some room between levels to accommodate schemes with named levels between ours. For example, Google Cloud Logging defines a Notice level between Info and Warn. Since there are only a few of these intermediate levels, the gap between the numbers need not be large. Our gap of 4 matches OpenTelemetry's mapping. Subtracting 9 from an OpenTelemetry level in the DEBUG, INFO, WARN and ERROR ranges converts it to the corresponding slog Level range. OpenTelemetry also has the names TRACE and FATAL, which slog does not. But those OpenTelemetry levels can still be represented as slog Levels by using the appropriate integers.
func (Level) MarshalJSON ¶
MarshalJSON implements encoding/json.Marshaler by quoting the output of Level.String.
func (Level) MarshalText ¶
MarshalText implements encoding.TextMarshaler by calling Level.String.
func (Level) String ¶
String returns a name for the level. If the level has a name, then that name in uppercase is returned. If the level is between named values, then an integer is appended to the uppercased name. Examples:
LevelWarn.String() => "WARN" (LevelInfo+2).String() => "INFO+2"
func (*Level) UnmarshalJSON ¶
UnmarshalJSON implements encoding/json.Unmarshaler It accepts any string produced by Level.MarshalJSON, ignoring case. It also accepts numeric offsets that would result in a different string on output. For example, "Error-8" would marshal as "INFO".
func (*Level) UnmarshalText ¶
UnmarshalText implements encoding.TextUnmarshaler. It accepts any string produced by Level.MarshalText, ignoring case. It also accepts numeric offsets that would result in a different string on output. For example, "Error-8" would marshal as "INFO".
type LevelVar ¶
type LevelVar struct {
// contains filtered or unexported fields
}
A LevelVar is a Level variable, to allow a [Handler] level to change dynamically. It implements Leveler as well as a Set method, and it is safe for use by multiple goroutines. The zero LevelVar corresponds to LevelInfo.
func (*LevelVar) MarshalText ¶
MarshalText implements encoding.TextMarshaler by calling Level.MarshalText.
func (*LevelVar) UnmarshalText ¶
UnmarshalText implements encoding.TextUnmarshaler by calling Level.UnmarshalText.
type Leveler ¶
type Leveler interface {
Level() Level
}
A Leveler provides a Level value.
As Level itself implements Leveler, clients typically supply a Level value wherever a Leveler is needed, such as in [HandlerOptions]. Clients who need to vary the level dynamically can provide a more complex Leveler implementation such as *LevelVar.
type Options ¶
type Options struct { Mode LogMode Level Level FileWriterOption zwriter.FileWriterOption NATSWriterOption zwriter.NATSWriterOption }