handler

package
v0.0.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2024 License: Apache-2.0 Imports: 11 Imported by: 0

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

func Err

func Err(err error) slog.Attr

Err 返回一个着色(颜色化)的 slog.Attr,通过 Handler 将该 slog.Attr 写为红色。 当与其他[slog.Handler]一起使用时,它表现如

slog.Any("err", err)

Types

type Error

type Error struct {
	// contains filtered or unexported fields
}

type Handler

type Handler struct {
	// contains filtered or unexported fields
}

Handler 实现了 slog.Handler 接口.

func NewHandler

func NewHandler(w io.Writer, opts *Options) *Handler

NewHandler 使用默认选项将彩色日志写入Writer w的[slog.Handler]。如果opts为nil,则使用默认选项。

func (*Handler) Enabled

func (h *Handler) Enabled(_ context.Context, level slog.Level) bool

Enabled 函数用于检查日志级别是否在处理器中启用

func (*Handler) Handle

func (h *Handler) Handle(_ context.Context, r slog.Record) error

Handle 处理记录并将其写入日志。

func (*Handler) WithAttrs

func (h *Handler) WithAttrs(attrs []slog.Attr) slog.Handler

WithAttrs 函数为handler类型的一个方法,用于返回一个具有指定属性的新的handler实例。

func (*Handler) WithGroup

func (h *Handler) WithGroup(name string) slog.Handler

WithGroup 函数为slog.Handler类型的method,用于给handler添加一个group。 参数name为要添加的group的名称。 如果name为空字符串,则返回原始的handler。 否则,克隆原始的handler并返回处理后的handler。 处理后的handler的groupPrefix字段会在原始字段的基础上加上新的group名称,并将新的group名称添加到groups字段中。

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替代品使用。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL