Merge pull request #431 from tgerring/jsonlogs
Structured logging updates
This commit is contained in:
commit
94e543bc39
@ -15,6 +15,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var chainlogger = logger.NewLogger("CHAIN")
|
var chainlogger = logger.NewLogger("CHAIN")
|
||||||
|
var jsonlogger = logger.NewJsonLogger()
|
||||||
|
|
||||||
type ChainEvent struct {
|
type ChainEvent struct {
|
||||||
Block *types.Block
|
Block *types.Block
|
||||||
@ -122,7 +123,7 @@ func (self *ChainManager) Status() (td *big.Int, currentBlock []byte, genesisBlo
|
|||||||
self.mu.RLock()
|
self.mu.RLock()
|
||||||
defer self.mu.RUnlock()
|
defer self.mu.RUnlock()
|
||||||
|
|
||||||
return self.td, self.currentBlock.Hash(), self.Genesis().Hash()
|
return self.td, self.currentBlock.Hash(), self.genesisBlock.Hash()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *ChainManager) SetProcessor(proc types.BlockProcessor) {
|
func (self *ChainManager) SetProcessor(proc types.BlockProcessor) {
|
||||||
@ -395,11 +396,11 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error {
|
|||||||
|
|
||||||
var canonical, split bool
|
var canonical, split bool
|
||||||
self.mu.Lock()
|
self.mu.Lock()
|
||||||
|
cblock := self.currentBlock
|
||||||
{
|
{
|
||||||
// Write block to database. Eventually we'll have to improve on this and throw away blocks that are
|
// Write block to database. Eventually we'll have to improve on this and throw away blocks that are
|
||||||
// not in the canonical chain.
|
// not in the canonical chain.
|
||||||
self.write(block)
|
self.write(block)
|
||||||
cblock := self.currentBlock
|
|
||||||
// Compare the TD of the last known block in the canonical chain to make sure it's greater.
|
// Compare the TD of the last known block in the canonical chain to make sure it's greater.
|
||||||
// At this point it's possible that a different chain (fork) becomes the new canonical chain.
|
// At this point it's possible that a different chain (fork) becomes the new canonical chain.
|
||||||
if td.Cmp(self.td) > 0 {
|
if td.Cmp(self.td) > 0 {
|
||||||
@ -417,6 +418,12 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error {
|
|||||||
self.mu.Unlock()
|
self.mu.Unlock()
|
||||||
|
|
||||||
if canonical {
|
if canonical {
|
||||||
|
jsonlogger.LogJson(&logger.EthChainNewHead{
|
||||||
|
BlockHash: ethutil.Bytes2Hex(block.Hash()),
|
||||||
|
BlockNumber: block.Number(),
|
||||||
|
ChainHeadHash: ethutil.Bytes2Hex(cblock.Hash()),
|
||||||
|
BlockPrevHash: ethutil.Bytes2Hex(block.ParentHash()),
|
||||||
|
})
|
||||||
self.setTransState(state.New(block.Root(), self.db))
|
self.setTransState(state.New(block.Root(), self.db))
|
||||||
self.eventMux.Post(ChainEvent{block, td})
|
self.eventMux.Post(ChainEvent{block, td})
|
||||||
}
|
}
|
||||||
|
@ -224,6 +224,14 @@ func (self *ethProtocol) handle() error {
|
|||||||
return self.protoError(ErrDecode, "msg %v: %v", msg, err)
|
return self.protoError(ErrDecode, "msg %v: %v", msg, err)
|
||||||
}
|
}
|
||||||
hash := request.Block.Hash()
|
hash := request.Block.Hash()
|
||||||
|
_, chainHead, _ := self.chainManager.Status()
|
||||||
|
jsonlogger.LogJson(&logger.EthChainReceivedNewBlock{
|
||||||
|
BlockHash: ethutil.Bytes2Hex(hash),
|
||||||
|
BlockNumber: request.Block.Number(), // this surely must be zero
|
||||||
|
ChainHeadHash: ethutil.Bytes2Hex(chainHead),
|
||||||
|
BlockPrevHash: ethutil.Bytes2Hex(request.Block.ParentHash()),
|
||||||
|
RemoteId: self.peer.ID().String(),
|
||||||
|
})
|
||||||
// to simplify backend interface adding a new block
|
// to simplify backend interface adding a new block
|
||||||
// uses AddPeer followed by AddHashes, AddBlock only if peer is the best peer
|
// uses AddPeer followed by AddHashes, AddBlock only if peer is the best peer
|
||||||
// (or selected as new best peer)
|
// (or selected as new best peer)
|
||||||
|
@ -66,11 +66,11 @@ func (l *EthMinerNewBlock) EventName() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type EthChainReceivedNewBlock struct {
|
type EthChainReceivedNewBlock struct {
|
||||||
BlockHash string `json:"block_hash"`
|
BlockHash string `json:"block_hash"`
|
||||||
BlockNumber int `json:"block_number"`
|
BlockNumber *big.Int `json:"block_number"`
|
||||||
ChainHeadHash string `json:"chain_head_hash"`
|
ChainHeadHash string `json:"chain_head_hash"`
|
||||||
BlockPrevHash string `json:"block_prev_hash"`
|
BlockPrevHash string `json:"block_prev_hash"`
|
||||||
RemoteId int `json:"remote_id"`
|
RemoteId string `json:"remote_id"`
|
||||||
LogEvent
|
LogEvent
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,10 +79,10 @@ func (l *EthChainReceivedNewBlock) EventName() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type EthChainNewHead struct {
|
type EthChainNewHead struct {
|
||||||
BlockHash string `json:"block_hash"`
|
BlockHash string `json:"block_hash"`
|
||||||
BlockNumber int `json:"block_number"`
|
BlockNumber *big.Int `json:"block_number"`
|
||||||
ChainHeadHash string `json:"chain_head_hash"`
|
ChainHeadHash string `json:"chain_head_hash"`
|
||||||
BlockPrevHash string `json:"block_prev_hash"`
|
BlockPrevHash string `json:"block_prev_hash"`
|
||||||
LogEvent
|
LogEvent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user