你好作者 请问如何设置最低日志级别?
pya789 opened this issue · 2 comments
pya789 commented
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下也没有设置全局日志最小等级的方法和属性
inhere commented
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:
# ....
pya789 commented
好的 谢谢作者