-
Notifications
You must be signed in to change notification settings - Fork 2
/
logger.go
49 lines (40 loc) · 1.02 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
package lldpd
import (
"github.com/sirupsen/logrus"
)
// Logger is a logging adapter interface
type Logger interface {
// Info logs informational messages.
Info(keyvals ...interface{})
// Error logs error messages.
Error(keyvals ...interface{})
}
// adapter is a thin wrapper around the logrus logger that adapts it to
// the Logger interface.
type adapter struct {
logrus *logrus.Entry
}
// Adapt creates a Logger backed from a logrus Entry.
func Adapt(l *logrus.Entry) Logger {
return &adapter{l}
}
func (a *adapter) Info(keyvals ...interface{}) {
fields := a.fields(keyvals...)
a.logrus.WithFields(fields).Info()
}
func (a *adapter) Error(keyvals ...interface{}) {
fields := a.fields(keyvals...)
a.logrus.WithFields(fields).Info()
}
func (a *adapter) fields(keyvals ...interface{}) logrus.Fields {
if len(keyvals)%2 != 0 {
keyvals = append(keyvals, "MISSING")
}
fields := make(logrus.Fields)
for i := 0; i < len(keyvals); i += 2 {
k := keyvals[i].(string)
v := keyvals[i+1]
fields[k] = v
}
return fields
}