浏览代码

Merge pull request #339 from tgerring/jsonlog

JSON log updates
Taylor Gerring 10 年之前
父节点
当前提交
4322632c59
共有 3 个文件被更改,包括 296 次插入300 次删除
  1. 1 0
      cmd/ethereum/main.go
  2. 0 2
      eth/backend.go
  3. 295 298
      logger/types.go

+ 1 - 0
cmd/ethereum/main.go

@@ -67,6 +67,7 @@ func main() {
 		DataDir:   Datadir,
 		LogFile:   LogFile,
 		LogLevel:  LogLevel,
+		LogFormat: LogFormat,
 		MaxPeers:  MaxPeer,
 		Port:      OutboundPort,
 		NAT:       NAT,

+ 0 - 2
eth/backend.go

@@ -209,9 +209,7 @@ func (s *Ethereum) Coinbase() []byte                     { return nil } // TODO
 func (s *Ethereum) Start() error {
 	jsonlogger.LogJson(&ethlogger.LogStarting{
 		ClientString:    s.net.Name,
-		Coinbase:        ethutil.Bytes2Hex(s.KeyManager().Address()),
 		ProtocolVersion: ProtocolVersion,
-		LogEvent:        ethlogger.LogEvent{Guid: ethutil.Bytes2Hex(crypto.FromECDSAPub(&s.net.PrivateKey.PublicKey))},
 	})
 
 	err := s.net.Start()

+ 295 - 298
logger/types.go

@@ -7,7 +7,6 @@ import (
 type utctime8601 struct{}
 
 func (utctime8601) MarshalJSON() ([]byte, error) {
-	// FIX This should be re-formated for proper ISO 8601
 	return []byte(`"` + time.Now().UTC().Format(time.RFC3339Nano)[:26] + `Z"`), nil
 }
 
@@ -16,14 +15,13 @@ type JsonLog interface {
 }
 
 type LogEvent struct {
-	Guid string      `json:"guid"`
-	Ts   utctime8601 `json:"ts"`
+	// Guid string      `json:"guid"`
+	Ts utctime8601 `json:"ts"`
 	// Level string      `json:"level"`
 }
 
 type LogStarting struct {
-	ClientString    string `json:"version_string"`
-	Coinbase        string `json:"coinbase"`
+	ClientString    string `json:"client_impl"`
 	ProtocolVersion int    `json:"eth_version"`
 	LogEvent
 }
@@ -32,17 +30,6 @@ func (l *LogStarting) EventName() string {
 	return "starting"
 }
 
-type P2PConnecting struct {
-	RemoteId       string `json:"remote_id"`
-	RemoteEndpoint string `json:"remote_endpoint"`
-	NumConnections int    `json:"num_connections"`
-	LogEvent
-}
-
-func (l *P2PConnecting) EventName() string {
-	return "p2p.connecting"
-}
-
 type P2PConnected struct {
 	RemoteId            string `json:"remote_id"`
 	RemoteAddress       string `json:"remote_addr"`
@@ -55,268 +42,46 @@ func (l *P2PConnected) EventName() string {
 	return "p2p.connected"
 }
 
-type P2PHandshaked struct {
-	RemoteCapabilities []string `json:"remote_capabilities"`
-	RemoteId           string   `json:"remote_id"`
-	NumConnections     int      `json:"num_connections"`
-	LogEvent
-}
-
-func (l *P2PHandshaked) EventName() string {
-	return "p2p.handshaked"
-}
-
-type P2PDisconnected struct {
-	NumConnections int    `json:"num_connections"`
-	RemoteId       string `json:"remote_id"`
-	LogEvent
-}
-
-func (l *P2PDisconnected) EventName() string {
-	return "p2p.disconnected"
-}
-
-type P2PDisconnecting struct {
-	Reason         string `json:"reason"`
-	RemoteId       string `json:"remote_id"`
-	NumConnections int    `json:"num_connections"`
-	LogEvent
-}
-
-func (l *P2PDisconnecting) EventName() string {
-	return "p2p.disconnecting"
-}
-
-type P2PDisconnectingBadHandshake struct {
-	Reason         string `json:"reason"`
-	RemoteId       string `json:"remote_id"`
-	NumConnections int    `json:"num_connections"`
-	LogEvent
-}
-
-func (l *P2PDisconnectingBadHandshake) EventName() string {
-	return "p2p.disconnecting.bad_handshake"
-}
-
-type P2PDisconnectingBadProtocol struct {
-	Reason         string `json:"reason"`
-	RemoteId       string `json:"remote_id"`
-	NumConnections int    `json:"num_connections"`
-	LogEvent
-}
-
-func (l *P2PDisconnectingBadProtocol) EventName() string {
-	return "p2p.disconnecting.bad_protocol"
-}
-
-type P2PDisconnectingReputation struct {
-	Reason         string `json:"reason"`
-	RemoteId       string `json:"remote_id"`
-	NumConnections int    `json:"num_connections"`
-	LogEvent
-}
-
-func (l *P2PDisconnectingReputation) EventName() string {
-	return "p2p.disconnecting.reputation"
-}
-
-type P2PDisconnectingDHT struct {
-	Reason         string `json:"reason"`
-	RemoteId       string `json:"remote_id"`
-	NumConnections int    `json:"num_connections"`
-	LogEvent
-}
-
-func (l *P2PDisconnectingDHT) EventName() string {
-	return "p2p.disconnecting.dht"
-}
-
-type P2PEthDisconnectingBadBlock struct {
-	Reason         string `json:"reason"`
-	RemoteId       string `json:"remote_id"`
-	NumConnections int    `json:"num_connections"`
-	LogEvent
-}
-
-func (l *P2PEthDisconnectingBadBlock) EventName() string {
-	return "p2p.eth.disconnecting.bad_block"
-}
-
-type P2PEthDisconnectingBadTx struct {
-	Reason         string `json:"reason"`
-	RemoteId       string `json:"remote_id"`
-	NumConnections int    `json:"num_connections"`
-	LogEvent
-}
-
-func (l *P2PEthDisconnectingBadTx) EventName() string {
-	return "p2p.eth.disconnecting.bad_tx"
-}
-
-type EthNewBlockMined struct {
-	BlockNumber     int    `json:"block_number"`
-	HeadHash        string `json:"head_hash"`
-	BlockHash       string `json:"block_hash"`
-	BlockHexRlp     string `json:"block_hexrlp"`
-	BlockDifficulty int    `json:"block_difficulty"`
-	BlockPrevHash   string `json:"block_prev_hash"`
-	LogEvent
-}
-
-func (l *EthNewBlockMined) EventName() string {
-	return "eth.newblock.mined"
-}
-
-type EthNewBlockBroadcasted struct {
-	BlockNumber     int    `json:"block_number"`
-	HeadHash        string `json:"head_hash"`
-	BlockHash       string `json:"block_hash"`
-	BlockDifficulty int    `json:"block_difficulty"`
-	BlockPrevHash   string `json:"block_prev_hash"`
+type EthMinerNewBlock struct {
+	BlockHash     string `json:"block_hash"`
+	BlockNumber   int    `json:"block_number"`
+	ChainHeadHash string `json:"chain_head_hash"`
+	BlockPrevHash string `json:"block_prev_hash"`
 	LogEvent
 }
 
-func (l *EthNewBlockBroadcasted) EventName() string {
-	return "eth.newblock.broadcasted"
+func (l *EthMinerNewBlock) EventName() string {
+	return "eth.miner.new_block"
 }
 
-type EthNewBlockReceived struct {
-	BlockNumber     int    `json:"block_number"`
-	HeadHash        string `json:"head_hash"`
-	BlockHash       string `json:"block_hash"`
-	BlockDifficulty int    `json:"block_difficulty"`
-	BlockPrevHash   string `json:"block_prev_hash"`
+type EthChainReceivedNewBlock struct {
+	BlockHash     string `json:"block_hash"`
+	BlockNumber   int    `json:"block_number"`
+	ChainHeadHash string `json:"chain_head_hash"`
+	BlockPrevHash string `json:"block_prev_hash"`
+	RemoteId      int    `json:"remote_id"`
 	LogEvent
 }
 
-func (l *EthNewBlockReceived) EventName() string {
-	return "eth.newblock.received"
+func (l *EthChainReceivedNewBlock) EventName() string {
+	return "eth.chain.received.new_block"
 }
 
-type EthNewBlockIsKnown struct {
-	BlockNumber     int    `json:"block_number"`
-	HeadHash        string `json:"head_hash"`
-	BlockHash       string `json:"block_hash"`
-	BlockDifficulty int    `json:"block_difficulty"`
-	BlockPrevHash   string `json:"block_prev_hash"`
+type EthChainNewHead struct {
+	BlockHash     string `json:"block_hash"`
+	BlockNumber   int    `json:"block_number"`
+	ChainHeadHash string `json:"chain_head_hash"`
+	BlockPrevHash string `json:"block_prev_hash"`
 	LogEvent
 }
 
-func (l *EthNewBlockIsKnown) EventName() string {
-	return "eth.newblock.is_known"
-}
-
-type EthNewBlockIsNew struct {
-	BlockNumber     int    `json:"block_number"`
-	HeadHash        string `json:"head_hash"`
-	BlockHash       string `json:"block_hash"`
-	BlockDifficulty int    `json:"block_difficulty"`
-	BlockPrevHash   string `json:"block_prev_hash"`
-	LogEvent
-}
-
-func (l *EthNewBlockIsNew) EventName() string {
-	return "eth.newblock.is_new"
-}
-
-type EthNewBlockMissingParent struct {
-	BlockNumber     int    `json:"block_number"`
-	HeadHash        string `json:"head_hash"`
-	BlockHash       string `json:"block_hash"`
-	BlockDifficulty int    `json:"block_difficulty"`
-	BlockPrevHash   string `json:"block_prev_hash"`
-	LogEvent
-}
-
-func (l *EthNewBlockMissingParent) EventName() string {
-	return "eth.newblock.missing_parent"
-}
-
-type EthNewBlockIsInvalid struct {
-	BlockNumber     int    `json:"block_number"`
-	HeadHash        string `json:"head_hash"`
-	BlockHash       string `json:"block_hash"`
-	BlockDifficulty int    `json:"block_difficulty"`
-	BlockPrevHash   string `json:"block_prev_hash"`
-	LogEvent
-}
-
-func (l *EthNewBlockIsInvalid) EventName() string {
-	return "eth.newblock.is_invalid"
-}
-
-type EthNewBlockChainIsOlder struct {
-	BlockNumber     int    `json:"block_number"`
-	HeadHash        string `json:"head_hash"`
-	BlockHash       string `json:"block_hash"`
-	BlockDifficulty int    `json:"block_difficulty"`
-	BlockPrevHash   string `json:"block_prev_hash"`
-	LogEvent
-}
-
-func (l *EthNewBlockChainIsOlder) EventName() string {
-	return "eth.newblock.chain.is_older"
-}
-
-type EthNewBlockChainIsCanonical struct {
-	BlockNumber     int    `json:"block_number"`
-	HeadHash        string `json:"head_hash"`
-	BlockHash       string `json:"block_hash"`
-	BlockDifficulty int    `json:"block_difficulty"`
-	BlockPrevHash   string `json:"block_prev_hash"`
-	LogEvent
-}
-
-func (l *EthNewBlockChainIsCanonical) EventName() string {
-	return "eth.newblock.chain.is_cannonical"
-}
-
-type EthNewBlockChainNotCanonical struct {
-	BlockNumber     int    `json:"block_number"`
-	HeadHash        string `json:"head_hash"`
-	BlockHash       string `json:"block_hash"`
-	BlockDifficulty int    `json:"block_difficulty"`
-	BlockPrevHash   string `json:"block_prev_hash"`
-	LogEvent
-}
-
-func (l *EthNewBlockChainNotCanonical) EventName() string {
-	return "eth.newblock.chain.not_cannonical"
-}
-
-type EthNewBlockChainSwitched struct {
-	BlockNumber     int    `json:"block_number"`
-	HeadHash        string `json:"head_hash"`
-	OldHeadHash     string `json:"old_head_hash"`
-	BlockHash       string `json:"block_hash"`
-	BlockDifficulty int    `json:"block_difficulty"`
-	BlockPrevHash   string `json:"block_prev_hash"`
-	LogEvent
-}
-
-func (l *EthNewBlockChainSwitched) EventName() string {
-	return "eth.newblock.chain.switched"
-}
-
-type EthTxCreated struct {
-	TxHash    string `json:"tx_hash"`
-	TxSender  string `json:"tx_sender"`
-	TxAddress string `json:"tx_address"`
-	TxHexRLP  string `json:"tx_hexrlp"`
-	TxNonce   int    `json:"tx_nonce"`
-	LogEvent
-}
-
-func (l *EthTxCreated) EventName() string {
-	return "eth.tx.created"
+func (l *EthChainNewHead) EventName() string {
+	return "eth.chain.new_head"
 }
 
 type EthTxReceived struct {
-	TxHash    string `json:"tx_hash"`
-	TxAddress string `json:"tx_address"`
-	TxHexRLP  string `json:"tx_hexrlp"`
-	RemoteId  string `json:"remote_id"`
-	TxNonce   int    `json:"tx_nonce"`
+	TxHash   string `json:"tx_hash"`
+	RemoteId string `json:"remote_id"`
 	LogEvent
 }
 
@@ -324,39 +89,271 @@ func (l *EthTxReceived) EventName() string {
 	return "eth.tx.received"
 }
 
-type EthTxBroadcasted struct {
-	TxHash    string `json:"tx_hash"`
-	TxSender  string `json:"tx_sender"`
-	TxAddress string `json:"tx_address"`
-	TxNonce   int    `json:"tx_nonce"`
-	LogEvent
-}
-
-func (l *EthTxBroadcasted) EventName() string {
-	return "eth.tx.broadcasted"
-}
-
-type EthTxValidated struct {
-	TxHash    string `json:"tx_hash"`
-	TxSender  string `json:"tx_sender"`
-	TxAddress string `json:"tx_address"`
-	TxNonce   int    `json:"tx_nonce"`
-	LogEvent
-}
-
-func (l *EthTxValidated) EventName() string {
-	return "eth.tx.validated"
-}
-
-type EthTxIsInvalid struct {
-	TxHash    string `json:"tx_hash"`
-	TxSender  string `json:"tx_sender"`
-	TxAddress string `json:"tx_address"`
-	Reason    string `json:"reason"`
-	TxNonce   int    `json:"tx_nonce"`
-	LogEvent
-}
-
-func (l *EthTxIsInvalid) EventName() string {
-	return "eth.tx.is_invalid"
-}
+//
+//
+// The types below are legacy and need to be converted to new format or deleted
+//
+//
+
+// type P2PConnecting struct {
+// 	RemoteId       string `json:"remote_id"`
+// 	RemoteEndpoint string `json:"remote_endpoint"`
+// 	NumConnections int    `json:"num_connections"`
+// 	LogEvent
+// }
+
+// func (l *P2PConnecting) EventName() string {
+// 	return "p2p.connecting"
+// }
+
+// type P2PHandshaked struct {
+// 	RemoteCapabilities []string `json:"remote_capabilities"`
+// 	RemoteId           string   `json:"remote_id"`
+// 	NumConnections     int      `json:"num_connections"`
+// 	LogEvent
+// }
+
+// func (l *P2PHandshaked) EventName() string {
+// 	return "p2p.handshaked"
+// }
+
+// type P2PDisconnected struct {
+// 	NumConnections int    `json:"num_connections"`
+// 	RemoteId       string `json:"remote_id"`
+// 	LogEvent
+// }
+
+// func (l *P2PDisconnected) EventName() string {
+// 	return "p2p.disconnected"
+// }
+
+// type P2PDisconnecting struct {
+// 	Reason         string `json:"reason"`
+// 	RemoteId       string `json:"remote_id"`
+// 	NumConnections int    `json:"num_connections"`
+// 	LogEvent
+// }
+
+// func (l *P2PDisconnecting) EventName() string {
+// 	return "p2p.disconnecting"
+// }
+
+// type P2PDisconnectingBadHandshake struct {
+// 	Reason         string `json:"reason"`
+// 	RemoteId       string `json:"remote_id"`
+// 	NumConnections int    `json:"num_connections"`
+// 	LogEvent
+// }
+
+// func (l *P2PDisconnectingBadHandshake) EventName() string {
+// 	return "p2p.disconnecting.bad_handshake"
+// }
+
+// type P2PDisconnectingBadProtocol struct {
+// 	Reason         string `json:"reason"`
+// 	RemoteId       string `json:"remote_id"`
+// 	NumConnections int    `json:"num_connections"`
+// 	LogEvent
+// }
+
+// func (l *P2PDisconnectingBadProtocol) EventName() string {
+// 	return "p2p.disconnecting.bad_protocol"
+// }
+
+// type P2PDisconnectingReputation struct {
+// 	Reason         string `json:"reason"`
+// 	RemoteId       string `json:"remote_id"`
+// 	NumConnections int    `json:"num_connections"`
+// 	LogEvent
+// }
+
+// func (l *P2PDisconnectingReputation) EventName() string {
+// 	return "p2p.disconnecting.reputation"
+// }
+
+// type P2PDisconnectingDHT struct {
+// 	Reason         string `json:"reason"`
+// 	RemoteId       string `json:"remote_id"`
+// 	NumConnections int    `json:"num_connections"`
+// 	LogEvent
+// }
+
+// func (l *P2PDisconnectingDHT) EventName() string {
+// 	return "p2p.disconnecting.dht"
+// }
+
+// type P2PEthDisconnectingBadBlock struct {
+// 	Reason         string `json:"reason"`
+// 	RemoteId       string `json:"remote_id"`
+// 	NumConnections int    `json:"num_connections"`
+// 	LogEvent
+// }
+
+// func (l *P2PEthDisconnectingBadBlock) EventName() string {
+// 	return "p2p.eth.disconnecting.bad_block"
+// }
+
+// type P2PEthDisconnectingBadTx struct {
+// 	Reason         string `json:"reason"`
+// 	RemoteId       string `json:"remote_id"`
+// 	NumConnections int    `json:"num_connections"`
+// 	LogEvent
+// }
+
+// func (l *P2PEthDisconnectingBadTx) EventName() string {
+// 	return "p2p.eth.disconnecting.bad_tx"
+// }
+
+// type EthNewBlockBroadcasted struct {
+// 	BlockNumber     int    `json:"block_number"`
+// 	HeadHash        string `json:"head_hash"`
+// 	BlockHash       string `json:"block_hash"`
+// 	BlockDifficulty int    `json:"block_difficulty"`
+// 	BlockPrevHash   string `json:"block_prev_hash"`
+// 	LogEvent
+// }
+
+// func (l *EthNewBlockBroadcasted) EventName() string {
+// 	return "eth.newblock.broadcasted"
+// }
+
+// type EthNewBlockIsKnown struct {
+// 	BlockNumber     int    `json:"block_number"`
+// 	HeadHash        string `json:"head_hash"`
+// 	BlockHash       string `json:"block_hash"`
+// 	BlockDifficulty int    `json:"block_difficulty"`
+// 	BlockPrevHash   string `json:"block_prev_hash"`
+// 	LogEvent
+// }
+
+// func (l *EthNewBlockIsKnown) EventName() string {
+// 	return "eth.newblock.is_known"
+// }
+
+// type EthNewBlockIsNew struct {
+// 	BlockNumber     int    `json:"block_number"`
+// 	HeadHash        string `json:"head_hash"`
+// 	BlockHash       string `json:"block_hash"`
+// 	BlockDifficulty int    `json:"block_difficulty"`
+// 	BlockPrevHash   string `json:"block_prev_hash"`
+// 	LogEvent
+// }
+
+// func (l *EthNewBlockIsNew) EventName() string {
+// 	return "eth.newblock.is_new"
+// }
+
+// type EthNewBlockMissingParent struct {
+// 	BlockNumber     int    `json:"block_number"`
+// 	HeadHash        string `json:"head_hash"`
+// 	BlockHash       string `json:"block_hash"`
+// 	BlockDifficulty int    `json:"block_difficulty"`
+// 	BlockPrevHash   string `json:"block_prev_hash"`
+// 	LogEvent
+// }
+
+// func (l *EthNewBlockMissingParent) EventName() string {
+// 	return "eth.newblock.missing_parent"
+// }
+
+// type EthNewBlockIsInvalid struct {
+// 	BlockNumber     int    `json:"block_number"`
+// 	HeadHash        string `json:"head_hash"`
+// 	BlockHash       string `json:"block_hash"`
+// 	BlockDifficulty int    `json:"block_difficulty"`
+// 	BlockPrevHash   string `json:"block_prev_hash"`
+// 	LogEvent
+// }
+
+// func (l *EthNewBlockIsInvalid) EventName() string {
+// 	return "eth.newblock.is_invalid"
+// }
+
+// type EthNewBlockChainIsOlder struct {
+// 	BlockNumber     int    `json:"block_number"`
+// 	HeadHash        string `json:"head_hash"`
+// 	BlockHash       string `json:"block_hash"`
+// 	BlockDifficulty int    `json:"block_difficulty"`
+// 	BlockPrevHash   string `json:"block_prev_hash"`
+// 	LogEvent
+// }
+
+// func (l *EthNewBlockChainIsOlder) EventName() string {
+// 	return "eth.newblock.chain.is_older"
+// }
+
+// type EthNewBlockChainIsCanonical struct {
+// 	BlockNumber     int    `json:"block_number"`
+// 	HeadHash        string `json:"head_hash"`
+// 	BlockHash       string `json:"block_hash"`
+// 	BlockDifficulty int    `json:"block_difficulty"`
+// 	BlockPrevHash   string `json:"block_prev_hash"`
+// 	LogEvent
+// }
+
+// func (l *EthNewBlockChainIsCanonical) EventName() string {
+// 	return "eth.newblock.chain.is_cannonical"
+// }
+
+// type EthNewBlockChainNotCanonical struct {
+// 	BlockNumber     int    `json:"block_number"`
+// 	HeadHash        string `json:"head_hash"`
+// 	BlockHash       string `json:"block_hash"`
+// 	BlockDifficulty int    `json:"block_difficulty"`
+// 	BlockPrevHash   string `json:"block_prev_hash"`
+// 	LogEvent
+// }
+
+// func (l *EthNewBlockChainNotCanonical) EventName() string {
+// 	return "eth.newblock.chain.not_cannonical"
+// }
+
+// type EthTxCreated struct {
+// 	TxHash    string `json:"tx_hash"`
+// 	TxSender  string `json:"tx_sender"`
+// 	TxAddress string `json:"tx_address"`
+// 	TxHexRLP  string `json:"tx_hexrlp"`
+// 	TxNonce   int    `json:"tx_nonce"`
+// 	LogEvent
+// }
+
+// func (l *EthTxCreated) EventName() string {
+// 	return "eth.tx.created"
+// }
+
+// type EthTxBroadcasted struct {
+// 	TxHash    string `json:"tx_hash"`
+// 	TxSender  string `json:"tx_sender"`
+// 	TxAddress string `json:"tx_address"`
+// 	TxNonce   int    `json:"tx_nonce"`
+// 	LogEvent
+// }
+
+// func (l *EthTxBroadcasted) EventName() string {
+// 	return "eth.tx.broadcasted"
+// }
+
+// type EthTxValidated struct {
+// 	TxHash    string `json:"tx_hash"`
+// 	TxSender  string `json:"tx_sender"`
+// 	TxAddress string `json:"tx_address"`
+// 	TxNonce   int    `json:"tx_nonce"`
+// 	LogEvent
+// }
+
+// func (l *EthTxValidated) EventName() string {
+// 	return "eth.tx.validated"
+// }
+
+// type EthTxIsInvalid struct {
+// 	TxHash    string `json:"tx_hash"`
+// 	TxSender  string `json:"tx_sender"`
+// 	TxAddress string `json:"tx_address"`
+// 	Reason    string `json:"reason"`
+// 	TxNonce   int    `json:"tx_nonce"`
+// 	LogEvent
+// }
+
+// func (l *EthTxIsInvalid) EventName() string {
+// 	return "eth.tx.is_invalid"
+// }