gookit/slog

你好作者 请问如何设置最低日志级别?

pya789 opened this issue · 2 comments

console可以使用h.LevelFormattable = slog.NewLvFormatter(slog.LevelByName(levelName))
因为使用了slog.AllLevels

// 文件
func fileHandlers() []slog.Handler {
	levelName := common.CONFIG.String("log.level")
	hs := make([]slog.Handler, 0, 2)
	infoHandler, err := handler.NewFileHandler("logs/info.log", func(c *handler.Config) {
		c.Levels = []slog.Level{slog.InfoLevel}
		c.UseJSON = true
	})
        // 这里如果使用LevelFormattable会和上边c.Levels造成冲突 
	infoHandler.LevelFormattable = slog.NewLvFormatter(slog.LevelByName(levelName))
	if err != nil {
		panic("失败")
	}
	errorHandler, err := handler.NewFileHandler("logs/error.log", func(c *handler.Config) {
		c.Levels = []slog.Level{slog.ErrorLevel}
	})
	if err != nil {
		panic("失败")
	}
	hs = append(hs, infoHandler, errorHandler)
	return hs
}

NewFileHandler如果使用LevelFormattable会和上边c.Levels造成冲突,因为配置levels时只配置了单个选项,之后设置全局日志最小等级时会覆盖上边的设置。*slog.Logger下也没有设置全局日志最小等级的方法和属性

console 的一般是应用于开发,所以用的 一个等级进行大小判断 简单处理的。

file handler 使用的级别list NewLvsFormatter, 相对于级别大小比较自定义性更高,可以精准配置任意想要记录的级别。

我一般配置的:

  • error.log slog.DangerLevels
  • info.log slog.NormalLevels
log:
  info:
    file: path/to/info.log
    levels: [info,trace, debug]
  error:

# ....

好的 谢谢作者