/
entry.go
39 lines (32 loc) · 943 Bytes
/
entry.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
package eventlog
import (
"time"
"github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/Sirupsen/logrus"
"github.com/ipfs/go-ipfs/util"
)
type entry struct {
loggables []Loggable
system string
event string
}
// Log logs the event unconditionally (regardless of log level)
// TODO add support for leveled-logs once we decide which levels we want
// for our structured logs
func (e *entry) Log() {
e.log()
}
// log is a private method invoked by the public Log, Info, Error methods
func (e *entry) log() {
// accumulate metadata
accum := Metadata{}
for _, loggable := range e.loggables {
accum = DeepMerge(accum, loggable.Loggable())
}
// apply final attributes to reserved keys
// TODO accum["level"] = level
accum["event"] = e.event
accum["system"] = e.system
accum["time"] = util.FormatRFC3339(time.Now())
// TODO roll our own event logger
logrus.WithFields(map[string]interface{}(accum)).Info(e.event)
}