57 lines
1.0 KiB
Go
57 lines
1.0 KiB
Go
package slogd
|
|
|
|
import (
|
|
"log/slog"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
LevelTrace = slog.Level(-8)
|
|
LevelDebug = slog.LevelDebug
|
|
LevelInfo = slog.LevelInfo
|
|
LevelNotice = slog.Level(2)
|
|
LevelWarn = slog.LevelWarn
|
|
LevelError = slog.LevelError
|
|
LevelFatal = slog.Level(12)
|
|
LevelDefault = LevelInfo
|
|
)
|
|
|
|
var levelNames = map[slog.Leveler]string{
|
|
LevelTrace: "TRACE",
|
|
LevelDebug: "DEBUG",
|
|
LevelInfo: "INFO",
|
|
LevelNotice: "NOTICE",
|
|
LevelWarn: "WARN",
|
|
LevelError: "ERROR",
|
|
LevelFatal: "FATAL",
|
|
}
|
|
|
|
func ReplaceAttrs(groups []string, a slog.Attr) slog.Attr {
|
|
if a.Key == slog.LevelKey {
|
|
a.Value = slog.StringValue(LevelName(a.Value.Any().(slog.Level)))
|
|
}
|
|
return a
|
|
}
|
|
|
|
func Level(l string) slog.Level {
|
|
mux.Lock()
|
|
defer mux.Unlock()
|
|
for k, v := range levelNames {
|
|
if strings.ToUpper(l) == v {
|
|
return k.Level()
|
|
}
|
|
}
|
|
return LevelDefault
|
|
}
|
|
|
|
func LevelName(l slog.Level) string {
|
|
mux.Lock()
|
|
defer mux.Unlock()
|
|
for k, v := range levelNames {
|
|
if k == l {
|
|
return v
|
|
}
|
|
}
|
|
return levelNames[LevelDefault]
|
|
}
|