github.com/status-im/status-go@v1.1.0/wakuv2/tracer.go (about) 1 package wakuv2 2 3 import ( 4 "fmt" 5 6 "github.com/btcsuite/btcutil/base58" 7 pubsub_pb "github.com/libp2p/go-libp2p-pubsub/pb" 8 9 "go.uber.org/zap" 10 ) 11 12 // Trace implements EventTracer interface. 13 // We use custom logging, because we want to base58-encode the peerIDs. And also make the messageIDs readable. 14 func (w *Waku) Trace(evt *pubsub_pb.TraceEvent) { 15 16 f := []zap.Field{ 17 zap.String("type", evt.Type.String()), 18 } 19 20 encode := func(peerID []byte) string { 21 return base58.Encode(peerID) 22 } 23 24 encodeMeta := func(meta *pubsub_pb.TraceEvent_RPCMeta) []zap.Field { 25 if meta == nil { 26 return nil 27 } 28 var out []zap.Field 29 for i, msg := range meta.Messages { 30 out = append(out, zap.String(fmt.Sprintf("MessageID[%d]", i), encode(msg.GetMessageID()))) 31 out = append(out, zap.Stringp(fmt.Sprintf("Topic[%d]", i), msg.Topic)) 32 } 33 for i, sub := range meta.Subscription { 34 out = append(out, zap.Boolp(fmt.Sprintf("Subscribe[%d]", i), sub.Subscribe)) 35 out = append(out, zap.Stringp(fmt.Sprintf("Topic[%d]", i), sub.Topic)) 36 } 37 if meta.Control != nil { 38 out = append(out, zap.Any("Control", meta.Control)) 39 } 40 return out 41 } 42 43 if evt.PublishMessage != nil { 44 f = append(f, zap.String("MessageID", encode(evt.PublishMessage.MessageID))) 45 } 46 if evt.RejectMessage != nil { 47 f = append(f, zap.String("MessageID", encode(evt.RejectMessage.MessageID))) 48 } 49 if evt.DuplicateMessage != nil { 50 f = append(f, zap.String("MessageID", encode(evt.DuplicateMessage.MessageID))) 51 } 52 if evt.DeliverMessage != nil { 53 f = append(f, zap.String("MessageID", encode(evt.DeliverMessage.MessageID))) 54 } 55 56 if evt.AddPeer != nil { 57 f = append(f, zap.String("PeerID", encode(evt.AddPeer.GetPeerID()))) 58 } 59 if evt.RemovePeer != nil { 60 f = append(f, zap.String("PeerID", encode(evt.RemovePeer.GetPeerID()))) 61 } 62 63 if evt.RecvRPC != nil { 64 f = append(f, zap.String("ReceivedFrom", encode(evt.RecvRPC.GetReceivedFrom()))) 65 f = append(f, encodeMeta(evt.RecvRPC.Meta)...) 66 } 67 if evt.SendRPC != nil { 68 f = append(f, zap.String("SendTo", encode(evt.SendRPC.GetSendTo()))) 69 f = append(f, encodeMeta(evt.SendRPC.Meta)...) 70 } 71 if evt.DropRPC != nil { 72 f = append(f, zap.String("SendTo", encode(evt.DropRPC.GetSendTo()))) 73 f = append(f, encodeMeta(evt.DropRPC.Meta)...) 74 } 75 76 if evt.Join != nil { 77 f = append(f, zap.String("Topic", evt.Join.GetTopic())) 78 } 79 if evt.Leave != nil { 80 f = append(f, zap.String("Topic", evt.Leave.GetTopic())) 81 } 82 if evt.Graft != nil { 83 f = append(f, zap.String("PeerID", encode(evt.Graft.GetPeerID()))) 84 f = append(f, zap.String("Topic", evt.Graft.GetTopic())) 85 } 86 if evt.Prune != nil { 87 f = append(f, zap.String("PeerID", encode(evt.Prune.GetPeerID()))) 88 f = append(f, zap.String("Topic", evt.Prune.GetTopic())) 89 } 90 91 w.logger.With(f...).Debug("pubsub trace") 92 }