Commit 4b160781 authored by Brian Tiger Chow's avatar Brian Tiger Chow

log(dht) log a couple events to demonstrate API

License: MIT
Signed-off-by: default avatarBrian Tiger Chow <brian@perfmode.com>
parent 2c88e342
...@@ -101,6 +101,8 @@ type Peer interface { ...@@ -101,6 +101,8 @@ type Peer interface {
// Update with the data of another peer instance // Update with the data of another peer instance
Update(Peer) error Update(Peer) error
Loggable() map[string]interface{}
} }
type Type uint8 type Type uint8
...@@ -112,6 +114,17 @@ const ( ...@@ -112,6 +114,17 @@ const (
Remote Remote
) )
func (t Type) String() string {
switch t {
case Local:
return "localPeer"
case Remote:
return "remotePeer"
default:
}
return "unspecifiedPeer"
}
type peer struct { type peer struct {
id ID id ID
addresses []ma.Multiaddr addresses []ma.Multiaddr
...@@ -145,6 +158,15 @@ func (p *peer) String() string { ...@@ -145,6 +158,15 @@ func (p *peer) String() string {
return "[Peer " + pid[:maxRunes] + "]" return "[Peer " + pid[:maxRunes] + "]"
} }
func (p *peer) Loggable() map[string]interface{} {
return map[string]interface{}{
p.GetType().String(): map[string]interface{}{
"id": p.ID(),
"latency": p.GetLatency(),
},
}
}
// Key returns the ID as a Key (string) for maps. // Key returns the ID as a Key (string) for maps.
func (p *peer) Key() u.Key { func (p *peer) Key() u.Key {
return u.Key(p.id) return u.Key(p.id)
......
...@@ -18,6 +18,7 @@ import ( ...@@ -18,6 +18,7 @@ import (
kb "github.com/jbenet/go-ipfs/routing/kbucket" kb "github.com/jbenet/go-ipfs/routing/kbucket"
u "github.com/jbenet/go-ipfs/util" u "github.com/jbenet/go-ipfs/util"
ctxc "github.com/jbenet/go-ipfs/util/ctxcloser" ctxc "github.com/jbenet/go-ipfs/util/ctxcloser"
"github.com/jbenet/go-ipfs/util/elog"
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context" context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore" ds "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore"
...@@ -25,7 +26,7 @@ import ( ...@@ -25,7 +26,7 @@ import (
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/goprotobuf/proto" "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/goprotobuf/proto"
) )
var log = u.Logger("dht") var log = elog.Logger("dht")
const doPinging = false const doPinging = false
...@@ -152,6 +153,7 @@ func (dht *IpfsDHT) HandleMessage(ctx context.Context, mes msg.NetMessage) msg.N ...@@ -152,6 +153,7 @@ func (dht *IpfsDHT) HandleMessage(ctx context.Context, mes msg.NetMessage) msg.N
dht.Update(mPeer) dht.Update(mPeer)
// Print out diagnostic // Print out diagnostic
log.Event(ctx, "foo", dht.self, mPeer, pmes)
log.Debugf("%s got message type: '%s' from %s", log.Debugf("%s got message type: '%s' from %s",
dht.self, pb.Message_MessageType_name[int32(pmes.GetType())], mPeer) dht.self, pb.Message_MessageType_name[int32(pmes.GetType())], mPeer)
...@@ -197,6 +199,7 @@ func (dht *IpfsDHT) sendRequest(ctx context.Context, p peer.Peer, pmes *pb.Messa ...@@ -197,6 +199,7 @@ func (dht *IpfsDHT) sendRequest(ctx context.Context, p peer.Peer, pmes *pb.Messa
start := time.Now() start := time.Now()
// Print out diagnostic // Print out diagnostic
log.Event(ctx, "sentMessage", dht.self, p, pmes)
log.Debugf("Sent message type: '%s' to %s", log.Debugf("Sent message type: '%s' to %s",
pb.Message_MessageType_name[int32(pmes.GetType())], p) pb.Message_MessageType_name[int32(pmes.GetType())], p)
......
...@@ -65,3 +65,11 @@ func (m *Message) SetClusterLevel(level int) { ...@@ -65,3 +65,11 @@ func (m *Message) SetClusterLevel(level int) {
lvl := int32(level) lvl := int32(level)
m.ClusterLevelRaw = &lvl m.ClusterLevelRaw = &lvl
} }
func (m *Message) Loggable() map[string]interface{} {
return map[string]interface{}{
"message": map[string]string{
"type": m.Type.String(),
},
}
}
...@@ -14,7 +14,7 @@ func init() { ...@@ -14,7 +14,7 @@ func init() {
type EventLogger interface { type EventLogger interface {
StandardLogger StandardLogger
Event(ctx context.Context, event string, m ...Metadata) Event(ctx context.Context, event string, m ...Loggable)
} }
type StandardLogger interface { type StandardLogger interface {
...@@ -46,14 +46,14 @@ type eventLogger struct { ...@@ -46,14 +46,14 @@ type eventLogger struct {
*logging.Logger *logging.Logger
} }
func (el *eventLogger) Event(ctx context.Context, event string, metadata ...Metadata) { func (el *eventLogger) Event(ctx context.Context, event string, metadata ...Loggable) {
existing, err := MetadataFromContext(ctx) existing, err := MetadataFromContext(ctx)
if err != nil { if err != nil {
existing = Metadata{} existing = Metadata{}
} }
accum := existing accum := existing
for _, datum := range metadata { for _, datum := range metadata {
accum = DeepMerge(accum, datum) accum = DeepMerge(accum, datum.Loggable())
} }
accum["event"] = event accum["event"] = event
......
...@@ -13,7 +13,7 @@ type Metadata map[string]interface{} ...@@ -13,7 +13,7 @@ type Metadata map[string]interface{}
// Loggable describes objects that can be marshalled into Metadata for logging // Loggable describes objects that can be marshalled into Metadata for logging
type Loggable interface { type Loggable interface {
Loggable() Metadata Loggable() map[string]interface{}
} }
// UniqueEvent returns a Metadata with the string key and UUID value // UniqueEvent returns a Metadata with the string key and UUID value
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment