forked from keys-pub/keys
-
Notifications
You must be signed in to change notification settings - Fork 0
/
log.go
87 lines (73 loc) · 1.62 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
package keys
import (
pkglog "log"
)
var logger = NewLogger(ErrLevel)
// SetLogger sets logger for the package.
func SetLogger(l Logger) {
logger = l
}
// Logger interface used in this package.
type Logger interface {
Debugf(format string, args ...interface{})
Infof(format string, args ...interface{})
Warningf(format string, args ...interface{})
Errorf(format string, args ...interface{})
Fatalf(format string, args ...interface{})
}
// LogLevel ...
type LogLevel int
const (
// DebugLevel ...
DebugLevel LogLevel = 3
// InfoLevel ...
InfoLevel LogLevel = 2
// WarnLevel ...
WarnLevel LogLevel = 1
// ErrLevel ...
ErrLevel LogLevel = 0
)
// NewLogger ...
func NewLogger(lev LogLevel) Logger {
return &defaultLog{Level: lev}
}
func (l LogLevel) String() string {
switch l {
case DebugLevel:
return "debug"
case InfoLevel:
return "info"
case WarnLevel:
return "warn"
case ErrLevel:
return "err"
default:
return ""
}
}
type defaultLog struct {
Level LogLevel
}
func (l defaultLog) Debugf(format string, args ...interface{}) {
if l.Level >= 3 {
pkglog.Printf("[DEBG] "+format+"\n", args...)
}
}
func (l defaultLog) Infof(format string, args ...interface{}) {
if l.Level >= 2 {
pkglog.Printf("[INFO] "+format+"\n", args...)
}
}
func (l defaultLog) Warningf(format string, args ...interface{}) {
if l.Level >= 1 {
pkglog.Printf("[WARN] "+format+"\n", args...)
}
}
func (l defaultLog) Errorf(format string, args ...interface{}) {
if l.Level >= 0 {
pkglog.Printf("[ERR] "+format+"\n", args...)
}
}
func (l defaultLog) Fatalf(format string, args ...interface{}) {
pkglog.Fatalf(format, args...)
}