-
Notifications
You must be signed in to change notification settings - Fork 0
/
level.go
78 lines (66 loc) · 1.53 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 log
import (
"errors"
"strings"
)
/*
Copyright 2019 Bruno Moura <[email protected]>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Level represents the supported log levels
type Level uint32
const (
// DEBUG log level
DEBUG = Level(1)
// INFO log level
INFO = Level(2)
// WARN log level
WARN = Level(3)
// ERROR log level
ERROR = Level(4)
// FATAL log level
FATAL = Level(5)
maxLevel = int(FATAL)
)
func (l Level) String() (level string) {
switch l {
case DEBUG:
return "debug"
case INFO:
return "info"
case WARN:
return "warn"
case ERROR:
return "error"
case FATAL:
return "fatal"
default:
return "unknown"
}
}
// ParseLevel parses the log level from a string
func ParseLevel(level string) (l Level, err error) {
level = strings.ToLower(level)
switch level {
case "debug":
return DEBUG, nil
case "info":
return INFO, nil
case "warn":
return WARN, nil
case "error":
return ERROR, nil
case "fatal":
return FATAL, nil
default:
return Level(0), errors.New("unknown log level")
}
}