aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTaylor Gerring <taylor.gerring@gmail.com>2015-01-22 01:47:21 +0800
committerTaylor Gerring <taylor.gerring@gmail.com>2015-01-22 01:47:21 +0800
commitc14900dbb007af8aefc5f5583f3c17a613c66802 (patch)
treee125ae22ae52f84277f7d050a953af2bc4ecf9a4
parent0aa76d3e5b3eb261103ebf5afd515394df0af914 (diff)
downloadgo-tangerine-c14900dbb007af8aefc5f5583f3c17a613c66802.tar
go-tangerine-c14900dbb007af8aefc5f5583f3c17a613c66802.tar.gz
go-tangerine-c14900dbb007af8aefc5f5583f3c17a613c66802.tar.bz2
go-tangerine-c14900dbb007af8aefc5f5583f3c17a613c66802.tar.lz
go-tangerine-c14900dbb007af8aefc5f5583f3c17a613c66802.tar.xz
go-tangerine-c14900dbb007af8aefc5f5583f3c17a613c66802.tar.zst
go-tangerine-c14900dbb007af8aefc5f5583f3c17a613c66802.zip
Add initial P2P json logs
-rw-r--r--p2p/server.go62
1 files changed, 61 insertions, 1 deletions
diff --git a/p2p/server.go b/p2p/server.go
index 4fd1f7d03..7dcbc9d11 100644
--- a/p2p/server.go
+++ b/p2p/server.go
@@ -8,6 +8,7 @@ import (
"sync"
"time"
+ "github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/logger"
)
@@ -20,6 +21,8 @@ const (
var srvlog = logger.NewLogger("P2P Server")
+var jsonlogger = logger.NewJsonLogger()
+
// Server manages all peer connections.
//
// The fields of Server are used as configuration parameters.
@@ -353,9 +356,25 @@ func (srv *Server) dialLoop() {
// connect to peer via dial out
func (srv *Server) dialPeer(desc *peerAddr, slot int) {
srvlog.Debugf("Dialing %v (slot %d)\n", desc, slot)
+ evd := map[string]interface{}{
+ "remote_id": ethutil.Bytes2Hex(desc.Pubkey),
+ "remote_endpoint": desc.String(),
+ "level": "debug",
+ "guid": ethutil.Bytes2Hex(srv.Identity.Pubkey()),
+ "num_connections": srv.PeerCount(),
+ }
+ jsonlogger.LogJson("p2p.connecting", evd)
conn, err := srv.Dialer.Dial(desc.Network(), desc.String())
if err != nil {
srvlog.DebugDetailf("dial error: %v", err)
+ evd := map[string]interface{}{
+ "reason": "dial error",
+ "remote_id": desc.String(),
+ "level": "debug",
+ "guid": ethutil.Bytes2Hex(srv.Identity.Pubkey()),
+ "num_connections": srv.PeerCount(),
+ }
+ jsonlogger.LogJson("p2p.disconnecting", evd)
srv.peerSlots <- slot
return
}
@@ -375,7 +394,17 @@ func (srv *Server) addPeer(conn net.Conn, desc *peerAddr, slot int) *Peer {
peer.slot = slot
srv.peers[slot] = peer
srv.peerCount++
- go func() { peer.loop(); srv.peerDisconnect <- peer }()
+ go func() {
+ evd := map[string]interface{}{
+ "guid": ethutil.Bytes2Hex(srv.Identity.Pubkey()),
+ "num_connections": srv.PeerCount(),
+ "remote_id": desc.String(),
+ "level": "debug",
+ }
+ jsonlogger.LogJson("p2p.connected", evd)
+ peer.loop()
+ srv.peerDisconnect <- peer
+ }()
return peer
}
@@ -393,13 +422,36 @@ func (srv *Server) removePeer(peer *Peer) {
srv.peers[peer.slot] = nil
// release slot to signal need for a new peer, last!
srv.peerSlots <- peer.slot
+ evd := map[string]interface{}{
+ "guid": ethutil.Bytes2Hex(srv.Identity.Pubkey()),
+ "num_connections": srv.PeerCount(),
+ "remote_id": ethutil.Bytes2Hex(peer.Identity().Pubkey()),
+ "level": "debug",
+ }
+ jsonlogger.LogJson("p2p.disconnected", evd)
}
func (srv *Server) verifyPeer(addr *peerAddr) error {
if srv.Blacklist.Exists(addr.Pubkey) {
+ evd := map[string]interface{}{
+ "reason": "blacklisted",
+ "remote_id": addr.String(),
+ "level": "debug",
+ "guid": ethutil.Bytes2Hex(srv.Identity.Pubkey()),
+ "num_connections": srv.PeerCount(),
+ }
+ jsonlogger.LogJson("p2p.disconnecting.reputation", evd)
return errors.New("blacklisted")
}
if bytes.Equal(srv.Identity.Pubkey()[1:], addr.Pubkey) {
+ evd := map[string]interface{}{
+ "reason": "not allowed to connect to srv",
+ "remote_id": addr.String(),
+ "level": "debug",
+ "guid": ethutil.Bytes2Hex(srv.Identity.Pubkey()),
+ "num_connections": srv.PeerCount(),
+ }
+ jsonlogger.LogJson("p2p.disconnecting", evd)
return newPeerError(errPubkeyForbidden, "not allowed to connect to srv")
}
srv.lock.RLock()
@@ -408,6 +460,14 @@ func (srv *Server) verifyPeer(addr *peerAddr) error {
if peer != nil {
id := peer.Identity()
if id != nil && bytes.Equal(id.Pubkey(), addr.Pubkey) {
+ evd := map[string]interface{}{
+ "reason": "already connected",
+ "remote_id": addr.String(),
+ "level": "debug",
+ "guid": ethutil.Bytes2Hex(srv.Identity.Pubkey()),
+ "num_connections": srv.PeerCount(),
+ }
+ jsonlogger.LogJson("p2p.disconnecting", evd)
return errors.New("already connected")
}
}