Documentation ¶
Overview ¶
Package tint 实现了一个 slog.Handler,可以写入着色(colorized)的日志。 输出格式受 [zerolog.ConsoleWriter] 和 slog.TextHandler 的启发。
可以通过 [Config] 自定义输出格式,它是[slog.HandlerOptions]的直接替代品。
定制属性 ¶
可以在写入之前使用 Config.ReplaceAttr 来修改或删除属性。 如果设置了该属性,将在每个非组属性上调用它。 详情请参阅 slog.HandlerOptions。
w := os.Stderr logger := slog.New( tint.NewHandler(w, &tint.Config{ ReplaceAttr: func(groups []string, a slog.Attr) slog.Attr { if a.Key == slog.TimeKey && len(groups) == 0 { return slog.Attr{} } return a }, }), )
自动启用颜色 ¶
默认情况下启用了颜色,可以使用 Config.NoColor 属性禁用颜色。 要根据终端功能自动启用颜色,请使用例如 [go-isatty] 包。
w := os.Stderr logger := slog.New( tint.NewHandler(w, &tint.Config{ NoColor: !isatty.IsTerminal(w.Fd()), }), )
Example ¶
handler := NewHandler(os.Stderr, &Options{ Level: slog.LevelDebug, TimeFormat: time.DateTime, }) slog.SetDefault(slog.New(handler)) slog.Info("Starting server", "addr", ":8080", "env", "production") slog.Debug("Connected to DB", "db", "myapp", "host", "localhost:5432") slog.Warn("Slow request", "method", "GET", "path", "/users", "duration", 497*time.Millisecond) slog.Error("DB connection lost", Err(errors.New("connection reset")), "db", "myapp")
Output:
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Handler ¶
type Handler struct {
// contains filtered or unexported fields
}
Handler 实现了 slog.Handler 接口.
func NewHandler ¶
NewHandler 使用默认选项将彩色日志写入Writer w的[slog.Handler]。如果opts为nil,则使用默认选项。
type Options ¶
type Options struct { // 启用源代码位置(默认值:false) AddSource bool // 要记录的最低级别(默认值:slog.LevelInfo) Level slog.Leveler // 在记录之前,调用ReplaceAttr重写每个非组属性。 // 详情请参考https://pkg.go.dev/log/slog#HandlerOptions。 ReplaceAttr func(groups []string, attr slog.Attr) slog.Attr // 时间格式(默认值:time.DateTime) TimeFormat string // 禁用颜色(默认值:false) NoColor bool // 跳过栈帧数(默认值:4) Skip int }
Options 写有染色日志的slog.Handler的选项。零值Options完全由默认值组成。
选项可以作为[slog.HandlerOptions]的drop-in替代品使用。
Click to show internal directories.
Click to hide internal directories.