-
Notifications
You must be signed in to change notification settings - Fork 2
/
logLevels.go
61 lines (54 loc) · 1.36 KB
/
logLevels.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
package logger
import (
"fmt"
"strings"
)
// LogLevel defines the priority level of a log line. Trace is the lowest priority level, Error is the highest
type LogLevel byte
// These constants are the string representation of the package logging levels.
const (
LogTrace LogLevel = 0
LogDebug LogLevel = 1
LogInfo LogLevel = 2
LogWarning LogLevel = 3
LogError LogLevel = 4
LogNone LogLevel = 5
)
// Levels contain all defined levels as a slice for an easier iteration
var Levels = []LogLevel{
LogTrace,
LogDebug,
LogInfo,
LogWarning,
LogError,
LogNone,
}
func (level LogLevel) String() string {
switch level {
case LogTrace:
return "TRACE"
case LogDebug:
return "DEBUG"
case LogInfo:
return "INFO "
case LogWarning:
return "WARN "
case LogError:
return "ERROR"
case LogNone:
return "NONE "
default:
return ""
}
}
// GetLogLevel gets the corresponding log level from provided string. The search is case insensitive.
func GetLogLevel(logLevelAsString string) (LogLevel, error) {
providedLogLevelUpperTrimmed := strings.Trim(strings.ToUpper(logLevelAsString), " ")
for _, level := range Levels {
levelUpperTrimmed := strings.Trim(strings.ToUpper(level.String()), " ")
if levelUpperTrimmed == providedLogLevelUpperTrimmed {
return level, nil
}
}
return LogTrace, fmt.Errorf("unknown log level provided '%s'", logLevelAsString)
}