/
typesAndVariables.go
93 lines (79 loc) · 1.97 KB
/
typesAndVariables.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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package log
type LogLevel uint
// String returns the LogLevel name as string
func (t *LogLevel) String() string {
for k, v := range level {
if *t == v {
return k
}
}
return "NONE"
}
// Color returns the defined color of the LogLevel
func (t *LogLevel) Color() string {
return lvlColor[*t]
}
// Caller contains the Caller information file path, function name and line number
type Caller struct {
Path string
FunctionName string
LineNumber int
}
// Message is the object which is passed to every handler function.
// Message contains the LogLevel, the Caller object and the message
type Message struct {
Level LogLevel
Caller Caller
Message string
}
type Handler func(message Message)
// LevelConfig represents the configuration for each LogLevel
type LevelConfig struct {
ShowLineNumber bool
ShowFunctionName bool
ShowFilePath bool
Handlers []Handler
}
// AddHandler adds a custom Handler to the existing handlers of the LogLevel
func (c *LevelConfig) AddHandler(handler Handler) {
c.Handlers = append(c.Handlers, handler)
}
// SetHandlers sets custom handlers for the LogLevel.
// SetHandlers overrides the existing handler
func (c *LevelConfig) SetHandlers(handler []Handler) {
c.Handlers = handler
}
// Config represents the config for all LogLevels
type Config struct {
Verbose LevelConfig
Debug LevelConfig
Warn LevelConfig
Info LevelConfig
}
const (
NONE LogLevel = 0
WARN LogLevel = 1
INFO LogLevel = 2
DEBUG LogLevel = 10
VERBOSE LogLevel = 20
)
var logLevel = VERBOSE
var defaultLevel = INFO
var colorsInLogs = false
var showColors = true
var config *Config
var showTimestamp = true
var level = map[string]LogLevel{
"NONE": NONE,
"WARN": WARN,
"INFO": INFO,
"DEBUG": DEBUG,
"VERBOSE": VERBOSE,
}
var lvlColor = map[LogLevel]string{
NONE: "",
WARN: ANSI_YELLOW_BACKGROUND + ANSI_BLACK,
INFO: ANSI_BLUE_BACKGROUND + ANSI_WHITE,
DEBUG: ANSI_RED_BACKGROUND + ANSI_WHITE,
VERBOSE: "",
}