@cryptotaxi247 / kubo / commits / b4af146fc

p2p/net: better dial log.Event

Juan Batiz-Benet committed Jan 28, 2015 at 00:13 UTC b4af146fc85b3fd4d9efcd9ceb84e7262285e060
2 files changed +30 -9
p2p/net/conn/dial.go
+1 -2
@@ -28,6 +28,7 @@ func (d *Dialer) String() string {
28 // Example: d.DialAddr(ctx, peer.Addresses()[0], peer)
29 func (d *Dialer) Dial(ctx context.Context, raddr ma.Multiaddr, remote peer.ID) (Conn, error) {
30 logdial := lgbl.Dial("conn", d.LocalPeer, remote, nil, raddr)
31 + logdial["encrypted"] = (d.PrivateKey != nil) // log wether this will be an encrypted dial or not.
32 defer log.EventBegin(ctx, "connDial", logdial).Done()
33
34 maconn, err := d.rawConnDial(ctx, raddr, remote)
@@ -53,12 +54,10 @@ func (d *Dialer) Dial(ctx context.Context, raddr ma.Multiaddr, remote peer.ID) (
54
55 if d.PrivateKey == nil {
56 log.Warning("dialer %s dialing INSECURELY %s at %s!", d, remote, raddr)
56 - log.Event(ctx, "connDialInsecure", logdial)
57 connOut = c
58 return
59 }
60
61 - defer log.EventBegin(ctx, "connDialEncrypt", logdial).Done()
61 c2, err := newSecureConn(ctx, d.PrivateKey, c)
62 if err != nil {
63 logdial["error"] = err
util/eventlog/loggables/loggables.go
+29 -7
@@ -32,19 +32,41 @@ func Error(e error) log.Loggable {
32 }
33
34 // Dial metadata is metadata for dial events
35 -func Dial(sys string, lid, rid peer.ID, laddr, raddr ma.Multiaddr) log.LoggableMap {
36 - m := log.Metadata{"subsystem": sys}
35 +func Dial(sys string, lid, rid peer.ID, laddr, raddr ma.Multiaddr) DeferredMap {
36 + m := DeferredMap{}
37 + m["subsystem"] = sys
38 if lid != "" {
38 - m["localPeer"] = lid.Pretty()
39 + m["localPeer"] = func() interface{} { return lid.Pretty() }
40 + _ = m["localPeer"].(func() interface{})
41 }
42 if laddr != nil {
41 - m["localAddr"] = laddr.String()
43 + m["localAddr"] = func() interface{} { return laddr.String() }
44 }
45 if rid != "" {
44 - m["remotePeer"] = rid.Pretty()
46 + m["remotePeer"] = func() interface{} { return rid.Pretty() }
47 }
48 if raddr != nil {
47 - m["remoteAddr"] = raddr.String()
49 + m["remoteAddr"] = func() interface{} { return raddr.String() }
50 }
49 - return log.LoggableMap(m)
51 + return m
52 +}
53 +
54 +// DeferredMap is a Loggable which may contained deffered values.
55 +type DeferredMap map[string]interface{}
56 +
57 +// Loggable describes objects that can be marshalled into Metadata for logging
58 +func (m DeferredMap) Loggable() map[string]interface{} {
59 + m2 := map[string]interface{}{}
60 + for k, v := range m {
61 +
62 + if vf, ok := v.(func() interface{}); ok {
63 + // if it's a DeferredVal, call it.
64 + m2[k] = vf()
65 +
66 + } else {
67 + // else use the value as is.
68 + m2[k] = v
69 + }
70 + }
71 + return m2
72 }