-
Notifications
You must be signed in to change notification settings - Fork 0
/
lager.go
91 lines (75 loc) · 2.09 KB
/
lager.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
/*
Copyright 2015 Doubledutch
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package lager
// Lager is a Lager that explicitly defines all of the log levels
// as log methods.
type Lager interface {
Tracef(msg string, v ...interface{})
Debugf(msg string, v ...interface{})
Infof(msg string, v ...interface{})
Warnf(msg string, v ...interface{})
Errorf(msg string, v ...interface{})
SetLevels(levels *Levels)
Levels() *Levels
}
// palgeLager represents a logger
type paleLager interface {
Logf(log Level, msg string, v ...interface{})
SetLevels(levels *Levels)
Levels() *Levels
}
type lager struct {
pale paleLager
levels *Levels
}
func newLager(lgr paleLager, levels *Levels) Lager {
return &lager{
pale: lgr,
levels: levels,
}
}
// Tracef logs with level Trace
func (lgr *lager) Tracef(msg string, v ...interface{}) {
lgr.logf(Trace, msg, v...)
}
// Debugf logs with level Debug
func (lgr *lager) Debugf(msg string, v ...interface{}) {
lgr.logf(Debug, msg, v...)
}
// Infof logs with level Info
func (lgr *lager) Infof(msg string, v ...interface{}) {
lgr.logf(Info, msg, v...)
}
// Warnf logs with level Warn
func (lgr *lager) Warnf(msg string, v ...interface{}) {
lgr.logf(Warn, msg, v...)
}
// Errorf logs with level Error
func (lgr *lager) Errorf(msg string, v ...interface{}) {
lgr.logf(Error, msg, v...)
}
func (lgr *lager) logf(lvl Level, msg string, v ...interface{}) {
if lgr.levels == nil {
return
}
if !lgr.levels.Contains(lvl) {
return
}
lgr.pale.Logf(lvl, msg, v...)
}
func (lgr *lager) SetLevels(levels *Levels) {
lgr.levels.Replace(levels)
}
func (lgr *lager) Levels() *Levels {
return lgr.levels
}