slog icon indicating copy to clipboard operation
slog copied to clipboard

是否可以自定义level、caller的宽度

Open zuozhehao opened this issue 10 months ago • 2 comments

[DEBUG] [INFO]

这个宽度不一直看起来有点别扭。

zuozhehao avatar Apr 18 '25 09:04 zuozhehao

可以通过配置 slog.LevelNames 设置 level 名称。caller 就不好固定了,长度不确定。

func TestIssues_161(t *testing.T) {
	slog.LevelNames[slog.WarnLevel] = "WARNI"
	slog.LevelNames[slog.InfoLevel] = "INFO "
	slog.LevelNames[slog.NoticeLevel] = "NOTIC"

	l := slog.New()
	l.DoNothingOnPanicFatal()
	l.AddHandler(handler.ConsoleWithMaxLevel(slog.TraceLevel))

	for _, level := range slog.AllLevels {
		l.Logf(level, "a %s test message", level.String())
	}
	assert.NoErr(t, l.LastErr())
}

Output:

Image

inhere avatar Apr 25 '25 04:04 inhere

master 新增了 slog.LimitLevelNameLen(5) 支持设置格式化时的level名称长度,会自动处理成设置的长度输出。下个小版本发布


	l := slog.New()
	l.DoNothingOnPanicFatal()

	h := handler.ConsoleWithMaxLevel(slog.TraceLevel)
	// 通过 SetFormatter 设置格式化 LevelNameLen=5
	h.SetFormatter(slog.TextFormatterWith(slog.LimitLevelNameLen(5)))
	l.AddHandler(h)

	for _, level := range slog.AllLevels {
		l.Logf(level, "a %s test message", level.String())
	}
	assert.NoErr(t, l.LastErr())

inhere avatar Apr 25 '25 08:04 inhere