Make connection logger take a custom logger

pull/1074/head
Eugene Kim 6 years ago
parent 75defed1ff
commit 6fdfd968c3
  1. 2
      cmd/bootnode/main.go
  2. 2
      cmd/harmony/main.go
  3. 50
      internal/utils/connlogger.go

@ -77,7 +77,7 @@ func main() {
log.Info("bootnode", "BN_MA", fmt.Sprintf("/ip4/%s/tcp/%s/p2p/%s", *ip, *port, host.GetID().Pretty())) log.Info("bootnode", "BN_MA", fmt.Sprintf("/ip4/%s/tcp/%s/p2p/%s", *ip, *port, host.GetID().Pretty()))
if *logConn { if *logConn {
host.GetP2PHost().Network().Notify(utils.ConnLogger) host.GetP2PHost().Network().Notify(utils.RootConnLogger)
} }
dataStore := dsync.MutexWrap(ds.NewMapDatastore()) dataStore := dsync.MutexWrap(ds.NewMapDatastore())

@ -291,7 +291,7 @@ func createGlobalConfig() *nodeconfig.ConfigType {
nodeConfig.Host, err = p2pimpl.NewHost(&nodeConfig.SelfPeer, nodeConfig.P2pPriKey) nodeConfig.Host, err = p2pimpl.NewHost(&nodeConfig.SelfPeer, nodeConfig.P2pPriKey)
if *logConn { if *logConn {
nodeConfig.Host.GetP2PHost().Network().Notify(utils.ConnLogger) nodeConfig.Host.GetP2PHost().Network().Notify(utils.RootConnLogger)
} }
if err != nil { if err != nil {
panic("unable to new host in harmony") panic("unable to new host in harmony")

@ -6,52 +6,62 @@ import (
ma "github.com/multiformats/go-multiaddr" ma "github.com/multiformats/go-multiaddr"
) )
type connLogger struct{} // ConnLogger is a LibP2P connection logger that logs to an Ethereum logger.
// It logs all listener/connection/stream open/close activities at debug level.
// To use one, add it on a LibP2P host swarm as a notifier, ex:
//
// connLogger := utils.NewConnLogger(
// host.Network().Notify(connLogger)
type ConnLogger struct {
l log.Logger
}
func (connLogger) Listen(net net.Network, ma ma.Multiaddr) { func (cl ConnLogger) Listen(net net.Network, ma ma.Multiaddr) {
log.Debug("[CONNECTIONS] Listener starting", "net", net, "addr", ma) cl.l.Debug("[CONNECTIONS] Listener starting", "net", net, "addr", ma)
} }
func (connLogger) ListenClose(net net.Network, ma ma.Multiaddr) { func (cl ConnLogger) ListenClose(net net.Network, ma ma.Multiaddr) {
log.Debug("[CONNECTIONS] Listener closing", "net", net, "addr", ma) cl.l.Debug("[CONNECTIONS] Listener closing", "net", net, "addr", ma)
} }
func (connLogger) Connected(net net.Network, conn net.Conn) { func (cl ConnLogger) Connected(net net.Network, conn net.Conn) {
log.Debug("[CONNECTIONS] Connected", "net", net, cl.l.Debug("[CONNECTIONS] Connected", "net", net,
"localPeer", conn.LocalPeer(), "localAddr", conn.LocalMultiaddr(), "localPeer", conn.LocalPeer(), "localAddr", conn.LocalMultiaddr(),
"remotePeer", conn.RemotePeer(), "remoteAddr", conn.RemoteMultiaddr(), "remotePeer", conn.RemotePeer(), "remoteAddr", conn.RemoteMultiaddr(),
) )
} }
func (connLogger) Disconnected(net net.Network, conn net.Conn) { func (cl ConnLogger) Disconnected(net net.Network, conn net.Conn) {
log.Debug("[CONNECTIONS] Disconnected", "net", net, cl.l.Debug("[CONNECTIONS] Disconnected", "net", net,
"localPeer", conn.LocalPeer(), "localAddr", conn.LocalMultiaddr(), "localPeer", conn.LocalPeer(), "localAddr", conn.LocalMultiaddr(),
"remotePeer", conn.RemotePeer(), "remoteAddr", conn.RemoteMultiaddr(), "remotePeer", conn.RemotePeer(), "remoteAddr", conn.RemoteMultiaddr(),
) )
} }
func (connLogger) OpenedStream(net net.Network, stream net.Stream) { func (cl ConnLogger) OpenedStream(net net.Network, stream net.Stream) {
conn := stream.Conn() conn := stream.Conn()
log.Debug("[CONNECTIONS] Stream opened", "net", net, cl.l.Debug("[CONNECTIONS] Stream opened", "net", net,
"localPeer", conn.LocalPeer(), "localAddr", conn.LocalMultiaddr(), "localPeer", conn.LocalPeer(), "localAddr", conn.LocalMultiaddr(),
"remotePeer", conn.RemotePeer(), "remoteAddr", conn.RemoteMultiaddr(), "remotePeer", conn.RemotePeer(), "remoteAddr", conn.RemoteMultiaddr(),
"protocol", stream.Protocol(), "protocol", stream.Protocol(),
) )
} }
func (connLogger) ClosedStream(net net.Network, stream net.Stream) { func (cl ConnLogger) ClosedStream(net net.Network, stream net.Stream) {
conn := stream.Conn() conn := stream.Conn()
log.Debug("[CONNECTIONS] Stream closed", "net", net, cl.l.Debug("[CONNECTIONS] Stream closed", "net", net,
"localPeer", conn.LocalPeer(), "localAddr", conn.LocalMultiaddr(), "localPeer", conn.LocalPeer(), "localAddr", conn.LocalMultiaddr(),
"remotePeer", conn.RemotePeer(), "remoteAddr", conn.RemoteMultiaddr(), "remotePeer", conn.RemotePeer(), "remoteAddr", conn.RemoteMultiaddr(),
"protocol", stream.Protocol(), "protocol", stream.Protocol(),
) )
} }
// ConnLogger is a LibP2P connection logger. // NewConnLogger returns a new connection logger that uses the given
// Add on a LibP2P host by calling: // Ethereum logger. See ConnLogger for usage.
// func NewConnLogger(l log.Logger) *ConnLogger {
// host.Network().Notify(utils.ConnLogger) return &ConnLogger{l: l}
// }
// It logs all listener/connection/stream open/close activities at debug level.
var ConnLogger connLogger // RootConnLogger is a LibP2P connection logger that logs to Ethereum root
// logger. See ConnLogger for usage.
var RootConnLogger = NewConnLogger(log.Root())

Loading…
Cancel
Save