github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/routing/dht/dht_logger.go (about) 1 package dht 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "time" 7 ) 8 9 type logDhtRPC struct { 10 Type string 11 Start time.Time 12 End time.Time 13 Duration time.Duration 14 RPCCount int 15 Success bool 16 } 17 18 func startNewRPC(name string) *logDhtRPC { 19 r := new(logDhtRPC) 20 r.Type = name 21 r.Start = time.Now() 22 return r 23 } 24 25 func (l *logDhtRPC) EndLog() { 26 l.End = time.Now() 27 l.Duration = l.End.Sub(l.Start) 28 } 29 30 func (l *logDhtRPC) Print() { 31 b, err := json.Marshal(l) 32 if err != nil { 33 log.Debugf("Error marshaling logDhtRPC object: %s", err) 34 } else { 35 log.Debug(string(b)) 36 } 37 } 38 39 func (l *logDhtRPC) String() string { 40 return fmt.Sprintf("DHT RPC: %s took %s, success = %v", l.Type, l.Duration, l.Success) 41 } 42 43 func (l *logDhtRPC) EndAndPrint() { 44 l.EndLog() 45 l.Print() 46 }