forked from altergui/strikememongo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
logger.go
68 lines (54 loc) · 1.29 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
package strikememongolog
import (
"log"
"os"
)
// LogLevel is a logging vebosity level
type LogLevel int
const (
// LogLevelDebug logs all messages
LogLevelDebug = 2
// LogLevelInfo logs a small number of information messages
LogLevelInfo = 3
// LogLevelWarn only logs messages that indicate a potential problem
LogLevelWarn = 4
// LogLevelSilent logs no messages
LogLevelSilent = 10
)
const defaultLogLevel = LogLevelInfo
// Logger is a logger that filters by log level
type Logger struct {
level LogLevel
out *log.Logger
}
// New constructs a new logger
func New(out *log.Logger, level LogLevel) *Logger {
if out == nil {
out = log.New(os.Stdout, "", 0)
}
if level == 0 {
level = defaultLogLevel
}
return &Logger{
level: level,
out: out,
}
}
// Debugf logs at the debug level
func (l *Logger) Debugf(format string, v ...interface{}) {
if l.level <= LogLevelDebug {
l.out.Printf("[memongo] [DEBUG] "+format, v...)
}
}
// Infof logs at the info level
func (l *Logger) Infof(format string, v ...interface{}) {
if l.level <= LogLevelInfo {
l.out.Printf("[memongo] [INFO] "+format, v...)
}
}
// Warnf logs at the warning level
func (l *Logger) Warnf(format string, v ...interface{}) {
if l.level <= LogLevelWarn {
l.out.Printf("[memongo] [WARN] "+format, v...)
}
}