-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlevel.go
78 lines (66 loc) · 1.46 KB
/
level.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package logger
import (
"fmt"
"log/slog"
"strings"
)
// Level type.
type Level = slog.Level
const (
// LevelDebug is a debug level.
LevelDebug = slog.LevelDebug
// LevelInfo is an info level.
LevelInfo = slog.LevelInfo
// LevelWarn is a warn level.
LevelWarn = slog.LevelWarn
// LevelError is an error level.
LevelError = slog.LevelError
// LevelFatal is a fatal level.
LevelFatal = slog.Level(12)
)
// AllLevels is a slice of all levels.
var AllLevels = []Level{
LevelDebug,
LevelInfo,
LevelWarn,
LevelError,
LevelFatal,
}
var levelNames = map[Level]string{
LevelDebug: "DEBUG",
LevelInfo: "INFO",
LevelWarn: "WARN",
LevelError: "ERROR",
LevelFatal: "FATAL",
}
var levelValues = map[string]Level{
"DEBUG": LevelDebug,
"INFO": LevelInfo,
"WARN": LevelWarn,
"ERROR": LevelError,
"FATAL": LevelFatal,
}
func replaceLevelNames(groups []string, a slog.Attr) slog.Attr {
// Customize the name of the level key and the output string, including
// custom level values.
if a.Key == slog.LevelKey {
level, ok := a.Value.Any().(slog.Level)
if !ok {
return a
}
name, ok := levelNames[level]
if !ok {
name = "UNKNOWN"
}
a.Value = slog.StringValue(name)
}
return a
}
// ParseLevel takes a string level and returns the Logrus log level constant.
func ParseLevel(lvl string) (Level, error) {
level, ok := levelValues[strings.ToUpper(lvl)]
if !ok {
return LevelInfo, fmt.Errorf("not a valid log Level: %q", lvl)
}
return level, nil
}