@cryptotaxi247 / kubo / commits / 4b1607819

log(dht) log a couple events to demonstrate API

License: MIT Signed-off-by: Brian Tiger Chow <brian@perfmode.com>

Brian Tiger Chow committed Nov 15, 2014 at 18:31 UTC 4b1607819f3cb9723c6b7d06beef2ed363fb68e1
5 files changed +38 -5
peer/peer.go
+22
@@ -101,6 +101,8 @@ type Peer interface {
101
102 // Update with the data of another peer instance
103 Update(Peer) error
104 +
105 + Loggable() map[string]interface{}
106 }
107
108 type Type uint8
@@ -112,6 +114,17 @@ const (
114 Remote
115 )
116
117 +func (t Type) String() string {
118 + switch t {
119 + case Local:
120 + return "localPeer"
121 + case Remote:
122 + return "remotePeer"
123 + default:
124 + }
125 + return "unspecifiedPeer"
126 +}
127 +
128 type peer struct {
129 id ID
130 addresses []ma.Multiaddr
@@ -145,6 +158,15 @@ func (p *peer) String() string {
158 return "[Peer " + pid[:maxRunes] + "]"
159 }
160
161 +func (p *peer) Loggable() map[string]interface{} {
162 + return map[string]interface{}{
163 + p.GetType().String(): map[string]interface{}{
164 + "id": p.ID(),
165 + "latency": p.GetLatency(),
166 + },
167 + }
168 +}
169 +
170 // Key returns the ID as a Key (string) for maps.
171 func (p *peer) Key() u.Key {
172 return u.Key(p.id)
routing/dht/dht.go
+4 -1
@@ -18,6 +18,7 @@ import (
18 kb "github.com/jbenet/go-ipfs/routing/kbucket"
19 u "github.com/jbenet/go-ipfs/util"
20 ctxc "github.com/jbenet/go-ipfs/util/ctxcloser"
21 + "github.com/jbenet/go-ipfs/util/elog"
22
23 context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
24 ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore"
@@ -25,7 +26,7 @@ import (
26 "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/goprotobuf/proto"
27 )
28
28 -var log = u.Logger("dht")
29 +var log = elog.Logger("dht")
30
31 const doPinging = false
32
@@ -152,6 +153,7 @@ func (dht *IpfsDHT) HandleMessage(ctx context.Context, mes msg.NetMessage) msg.N
153 dht.Update(mPeer)
154
155 // Print out diagnostic
156 + log.Event(ctx, "foo", dht.self, mPeer, pmes)
157 log.Debugf("%s got message type: '%s' from %s",
158 dht.self, pb.Message_MessageType_name[int32(pmes.GetType())], mPeer)
159
@@ -197,6 +199,7 @@ func (dht *IpfsDHT) sendRequest(ctx context.Context, p peer.Peer, pmes *pb.Messa
199 start := time.Now()
200
201 // Print out diagnostic
202 + log.Event(ctx, "sentMessage", dht.self, p, pmes)
203 log.Debugf("Sent message type: '%s' to %s",
204 pb.Message_MessageType_name[int32(pmes.GetType())], p)
205
routing/dht/pb/message.go
+8
@@ -65,3 +65,11 @@ func (m *Message) SetClusterLevel(level int) {
65 lvl := int32(level)
66 m.ClusterLevelRaw = &lvl
67 }
68 +
69 +func (m *Message) Loggable() map[string]interface{} {
70 + return map[string]interface{}{
71 + "message": map[string]string{
72 + "type": m.Type.String(),
73 + },
74 + }
75 +}
util/elog/log.go
+3 -3
@@ -14,7 +14,7 @@ func init() {
14
15 type EventLogger interface {
16 StandardLogger
17 - Event(ctx context.Context, event string, m ...Metadata)
17 + Event(ctx context.Context, event string, m ...Loggable)
18 }
19
20 type StandardLogger interface {
@@ -46,14 +46,14 @@ type eventLogger struct {
46 *logging.Logger
47 }
48
49 -func (el *eventLogger) Event(ctx context.Context, event string, metadata ...Metadata) {
49 +func (el *eventLogger) Event(ctx context.Context, event string, metadata ...Loggable) {
50 existing, err := MetadataFromContext(ctx)
51 if err != nil {
52 existing = Metadata{}
53 }
54 accum := existing
55 for _, datum := range metadata {
56 - accum = DeepMerge(accum, datum)
56 + accum = DeepMerge(accum, datum.Loggable())
57 }
58 accum["event"] = event
59
util/elog/metadata.go
+1 -1
@@ -13,7 +13,7 @@ type Metadata map[string]interface{}
13
14 // Loggable describes objects that can be marshalled into Metadata for logging
15 type Loggable interface {
16 - Loggable() Metadata
16 + Loggable() map[string]interface{}
17 }
18
19 // UniqueEvent returns a Metadata with the string key and UUID value