[tm-monitor] rewrite eventmeter to use go-kit/log

This commit is contained in:
Anton Kaliaev 2017-03-21 17:26:54 +04:00
parent 06e5b8c2df
commit dee06a92d9
No known key found for this signature in database
GPG Key ID: 7B6881D965918214
4 changed files with 17 additions and 8 deletions

View File

@ -6,16 +6,14 @@ import (
"sync" "sync"
"time" "time"
"github.com/go-kit/kit/log"
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
"github.com/pkg/errors"
metrics "github.com/rcrowley/go-metrics" metrics "github.com/rcrowley/go-metrics"
events "github.com/tendermint/go-events" events "github.com/tendermint/go-events"
client "github.com/tendermint/go-rpc/client" client "github.com/tendermint/go-rpc/client"
log15 "github.com/tendermint/log15"
) )
// Log allows you to set your own logger.
var Log log15.Logger
//------------------------------------------------------ //------------------------------------------------------
// Generic system to subscribe to events and record their frequency // Generic system to subscribe to events and record their frequency
//------------------------------------------------------ //------------------------------------------------------
@ -96,6 +94,8 @@ type EventMeter struct {
unmarshalEvent EventUnmarshalFunc unmarshalEvent EventUnmarshalFunc
quit chan struct{} quit chan struct{}
logger log.Logger
} }
func NewEventMeter(addr string, unmarshalEvent EventUnmarshalFunc) *EventMeter { func NewEventMeter(addr string, unmarshalEvent EventUnmarshalFunc) *EventMeter {
@ -106,10 +106,16 @@ func NewEventMeter(addr string, unmarshalEvent EventUnmarshalFunc) *EventMeter {
receivedPong: true, receivedPong: true,
unmarshalEvent: unmarshalEvent, unmarshalEvent: unmarshalEvent,
quit: make(chan struct{}), quit: make(chan struct{}),
logger: log.NewNopLogger(),
} }
return em return em
} }
// SetLogger lets you set your own logger
func (em *EventMeter) SetLogger(l log.Logger) {
em.logger = l
}
func (em *EventMeter) String() string { func (em *EventMeter) String() string {
return em.wsc.Address return em.wsc.Address
} }
@ -225,11 +231,11 @@ func (em *EventMeter) receiveRoutine() {
select { select {
case <-pingTicker.C: case <-pingTicker.C:
if pingAttempts, err = em.pingForLatency(pingAttempts); err != nil { if pingAttempts, err = em.pingForLatency(pingAttempts); err != nil {
Log.Error("Failed to write ping message on websocket", err) em.logger.Log("err", errors.Wrap(err, "Failed to write ping message on websocket"))
em.StopAndReconnect() em.StopAndReconnect()
return return
} else if pingAttempts >= maxPingsPerPong { } else if pingAttempts >= maxPingsPerPong {
Log.Error(fmt.Sprintf("Have not received a pong in %v", time.Duration(pingAttempts)*pingTime)) em.logger.Log("err", errors.Errorf("Have not received a pong in %v", time.Duration(pingAttempts)*pingTime))
em.StopAndReconnect() em.StopAndReconnect()
return return
} }
@ -240,7 +246,7 @@ func (em *EventMeter) receiveRoutine() {
} }
eventID, data, err := em.unmarshalEvent(r) eventID, data, err := em.unmarshalEvent(r)
if err != nil { if err != nil {
Log.Error(err.Error()) em.logger.Log("err", err)
continue continue
} }
if eventID != "" { if eventID != "" {

View File

@ -15,7 +15,6 @@ import:
- package: github.com/tendermint/go-rpc - package: github.com/tendermint/go-rpc
subpackages: subpackages:
- client - client
- package: github.com/tendermint/log15
- package: github.com/go-kit/kit - package: github.com/go-kit/kit
subpackages: subpackages:
- log - log

View File

@ -4,6 +4,7 @@ import (
"log" "log"
"reflect" "reflect"
gokitlog "github.com/go-kit/kit/log"
ctypes "github.com/tendermint/tendermint/rpc/core/types" ctypes "github.com/tendermint/tendermint/rpc/core/types"
em "github.com/tendermint/tools/tm-monitor/eventmeter" em "github.com/tendermint/tools/tm-monitor/eventmeter"
) )
@ -16,6 +17,7 @@ type EventMeter struct {
func (e *EventMeter) Start() error { return nil } func (e *EventMeter) Start() error { return nil }
func (e *EventMeter) Stop() {} func (e *EventMeter) Stop() {}
func (e *EventMeter) SetLogger(l gokitlog.Logger) {}
func (e *EventMeter) RegisterLatencyCallback(cb em.LatencyCallbackFunc) { e.latencyCallback = cb } func (e *EventMeter) RegisterLatencyCallback(cb em.LatencyCallbackFunc) { e.latencyCallback = cb }
func (e *EventMeter) RegisterDisconnectCallback(cb em.DisconnectCallbackFunc) { func (e *EventMeter) RegisterDisconnectCallback(cb em.DisconnectCallbackFunc) {
e.disconnectCallback = cb e.disconnectCallback = cb

View File

@ -98,6 +98,7 @@ func (n *Node) NotifyAboutDisconnects(ch chan<- bool) {
// SetLogger lets you set your own logger // SetLogger lets you set your own logger
func (n *Node) SetLogger(l log.Logger) { func (n *Node) SetLogger(l log.Logger) {
n.logger = l n.logger = l
n.em.SetLogger(l)
} }
func (n *Node) Start() error { func (n *Node) Start() error {
@ -265,6 +266,7 @@ type eventMeter interface {
RegisterDisconnectCallback(em.DisconnectCallbackFunc) RegisterDisconnectCallback(em.DisconnectCallbackFunc)
Subscribe(string, em.EventCallbackFunc) error Subscribe(string, em.EventCallbackFunc) error
Unsubscribe(string) error Unsubscribe(string) error
SetLogger(l log.Logger)
} }
// UnmarshalEvent unmarshals a json event // UnmarshalEvent unmarshals a json event