-
Notifications
You must be signed in to change notification settings - Fork 0
/
logger.go
91 lines (76 loc) · 2.34 KB
/
logger.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
package hog
import (
"io"
"os"
)
type Logger interface {
Trace() Event
Debug() Event
Info() Event
Warn() Event
Error() Event
Fatal() Event
Panic() Event
Op() Event
SetLevel(Level)
AddSkip(int)
NewEvent(int, Level, bool) Event
}
type nillogger struct{}
var DefaultLogger Logger = nillogger{}
type logger struct {
io.Writer
lvl Level
skip int
}
func (l *logger) NewEvent(skip int, lvl Level, flag bool) Event {
if lvl >= l.lvl {
e := getevent()
e.Init(flag, l.skip, lvl, l.Writer)
return e
}
return nilevent{}
}
func (l *logger) Trace() Event { return l.NewEvent(l.skip, TRACE, false) }
func (l *logger) Debug() Event { return l.NewEvent(l.skip, DEBUG, false) }
func (l *logger) Info() Event { return l.NewEvent(l.skip, INFO, false) }
func (l *logger) Warn() Event { return l.NewEvent(l.skip, WARN, false) }
func (l *logger) Error() Event { return l.NewEvent(l.skip, ERROR, false) }
func (l *logger) Fatal() Event { return l.NewEvent(l.skip, FATAL, false) }
func (l *logger) Panic() Event { return l.NewEvent(l.skip, PANIC, false) }
func (l *logger) Op() Event { return l.NewEvent(l.skip, OP, true) }
func (l *logger) SetLevel(lvl Level) { l.lvl = lvl }
func (l *logger) AddSkip(skip int) { l.skip += skip }
func New(lvl Level, ws ...io.Writer) Logger {
var w io.Writer
switch len(ws) {
case 0:
w = os.Stdout
case 1:
w = ws[0]
default:
w = io.MultiWriter(ws...)
}
return &logger{w, lvl, 3}
}
func Simple(filename string) Logger {
return New(DEBUG, &LoggerFile{
Filename: filename,
MaxSize: 100,
MaxAge: 30,
MaxBackups: 11,
LocalTime: false,
Compress: false,
})
}
func (nillogger) NewEvent(int, uint8, bool) Event { return nilevent{} }
func (nillogger) Trace() Event { return nilevent{} }
func (nillogger) Debug() Event { return nilevent{} }
func (nillogger) Info() Event { return nilevent{} }
func (nillogger) Warn() Event { return nilevent{} }
func (nillogger) Error() Event { return nilevent{} }
func (nillogger) Fatal() Event { return fpevent{} }
func (nillogger) Panic() Event { return fpevent{} }
func (nillogger) Op() Event { return nilevent{} }
func (nillogger) SetLevel(Level) {}
func (nillogger) AddSkip(int) {}