/
log.go
105 lines (87 loc) · 1.78 KB
/
log.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
94
95
96
97
98
99
100
101
102
103
104
105
package log
import (
"errors"
)
//param:
// - LogTypeNull, LogTypeStdout, LogTypeStdoutColor: ignore
// - LogTypeSyslog: tag
// - LogTypeFile: fileName
func New(logType, minLevel int, param string) (l Log, err error) {
switch logType {
case LogTypeNull:
l = NewNull()
case LogTypeStdout:
l = NewStdout(minLevel)
case LogTypeStdoutColor:
l = NewStdoutColor(minLevel)
case LogTypeFile:
l, err = NewFile(param, minLevel)
case LogTypeSyslog:
l, err = NewSyslog(param, minLevel)
default:
err = ErrInvalidLogType
}
return
}
func (p *logBase) Fatalf(format string, args ...interface{}) {
}
func (p *logBase) Errorf(format string, args ...interface{}) {
}
func (p *logBase) Infof(format string, args ...interface{}) {
}
func (p *logBase) Debugf(format string, args ...interface{}) {
}
func (p *logBase) SetMinLevel(level int) {
p.level = level
}
func (p *logBase) MinLevel() int {
return p.level
}
func (p *logBase) Write(b []byte) (n int, err error) {
n = len(b)
return
}
func (p *logBase) Close() error {
return nil
}
func NewNull() Log {
return &logBase{level: LogLevelFatal}
}
type logBase struct {
level int
}
type Log interface {
Fatalf(format string, args ...interface{})
Errorf(format string, args ...interface{})
Infof(format string, args ...interface{})
Debugf(format string, args ...interface{})
Write(p []byte) (n int, err error)
Close() error
SetMinLevel(level int)
MinLevel() int
}
const (
LogLevelFatal = iota
LogLevelError
LogLevelInfo
LogLevelDebug
)
var (
levelNames = [...]string{
"FATAL", "ERROR", "INFO ", "DEBUG",
}
levelColors = [...]int{
31, //red
31, //red
36, //blue
37, //gray
}
ErrInvalidLogType = errors.New("Invalid log type")
)
const (
LogTypeNull = iota
LogTypeStdout
LogTypeStdoutColor
LogTypeSyslog
LogTypeFile
)