You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

171 lines
11 KiB

  1. ---
  2. order: 7
  3. ---
  4. ## Logging
  5. Logging adds detail and allows the node operator to better identify what they are looking for. Tendermint supports log levels on a global and per-module basis. This allows the node operator to see only the information they need and the developer to hone in on specific changes they are working on.
  6. ## Configuring Log Levels
  7. There are three log levels, `info`, `debug` and `error`. These can be configured either through the command line via `tendermint start --log-level ""` or within the `config.toml` file.
  8. - `info` Info represents an informational message. It is used to show that modules have started, stopped and how they are functioning.
  9. - `debug` Debug is used to trace various calls or problems. Debug is used widely throughout a codebase and can lead to overly verbose logging.
  10. - `error` Error represents something that has gone wrong. An error log can represent a potential problem that can lead to a node halt.
  11. The default setting is a global `main:info,state:info,statesync:info,*:error` level. If you would like to set the log level for a specific module, it can be done in the following format:
  12. > We are setting all modules to log level `info` and the mempool to `error`. This will log all errors within the mempool module.
  13. Within the `config.toml`:
  14. ```toml
  15. # Output level for logging, including package level options
  16. log-level = "*:info,mempool:error"
  17. ```
  18. Via the command line:
  19. ```sh
  20. tendermint start --log-level "*:info,mempool:error"
  21. ```
  22. ## List of modules
  23. Here is the list of modules you may encounter in Tendermint's log and a
  24. little overview what they do.
  25. - `abci-client` As mentioned in [Application Development Guide](../app-dev/app-development.md), Tendermint acts as an ABCI
  26. client with respect to the application and maintains 3 connections:
  27. mempool, consensus and query. The code used by Tendermint Core can
  28. be found [here](https://github.com/tendermint/tendermint/tree/master/abci/client).
  29. - `blockchain` Provides storage, pool (a group of peers), and reactor
  30. for both storing and exchanging blocks between peers.
  31. - `consensus` The heart of Tendermint core, which is the
  32. implementation of the consensus algorithm. Includes two
  33. "submodules": `wal` (write-ahead logging) for ensuring data
  34. integrity and `replay` to replay blocks and messages on recovery
  35. from a crash.
  36. [here](https://github.com/tendermint/tendermint/blob/master/types/events.go).
  37. You can subscribe to them by calling `subscribe` RPC method. Refer
  38. to [RPC docs](./rpc.md) for additional information.
  39. - `mempool` Mempool module handles all incoming transactions, whenever
  40. they are coming from peers or the application.
  41. - `p2p` Provides an abstraction around peer-to-peer communication. For
  42. more details, please check out the
  43. [README](https://github.com/tendermint/tendermint/blob/master/p2p/README.md).
  44. - `rpc-server` RPC server. For implementation details, please read the
  45. [doc.go](https://github.com/tendermint/tendermint/blob/master/rpc/jsonrpc/doc.go).
  46. - `state` Represents the latest state and execution submodule, which
  47. executes blocks against the application.
  48. - `statesync` Provides a way to quickly sync a node with pruned history.
  49. ### Walkabout example
  50. We first create three connections (mempool, consensus and query) to the
  51. application (running `kvstore` locally in this case).
  52. ```sh
  53. I[10-04|13:54:27.364] Starting multiAppConn module=proxy impl=multiAppConn
  54. I[10-04|13:54:27.366] Starting localClient module=abci-client connection=query impl=localClient
  55. I[10-04|13:54:27.366] Starting localClient module=abci-client connection=mempool impl=localClient
  56. I[10-04|13:54:27.367] Starting localClient module=abci-client connection=consensus impl=localClient
  57. ```
  58. Then Tendermint Core and the application perform a handshake.
  59. ```sh
  60. I[10-04|13:54:27.367] ABCI Handshake module=consensus appHeight=90 appHash=E0FBAFBF6FCED8B9786DDFEB1A0D4FA2501BADAD
  61. I[10-04|13:54:27.368] ABCI Replay Blocks module=consensus appHeight=90 storeHeight=90 stateHeight=90
  62. I[10-04|13:54:27.368] Completed ABCI Handshake - Tendermint and App are synced module=consensus appHeight=90 appHash=E0FBAFBF6FCED8B9786DDFEB1A0D4FA2501BADAD
  63. ```
  64. After that, we start a few more things like the event switch, reactors,
  65. and perform UPNP discover in order to detect the IP address.
  66. ```sh
  67. I[10-04|13:54:27.374] Starting EventSwitch module=types impl=EventSwitch
  68. I[10-04|13:54:27.375] This node is a validator module=consensus
  69. I[10-04|13:54:27.379] Starting Node module=main impl=Node
  70. I[10-04|13:54:27.381] Local listener module=p2p ip=:: port=26656
  71. I[10-04|13:54:27.382] Getting UPNP external address module=p2p
  72. I[10-04|13:54:30.386] Could not perform UPNP discover module=p2p err="write udp4 0.0.0.0:38238->239.255.255.250:1900: i/o timeout"
  73. I[10-04|13:54:30.386] Starting DefaultListener module=p2p impl=Listener(@10.0.2.15:26656)
  74. I[10-04|13:54:30.387] Starting P2P Switch module=p2p impl="P2P Switch"
  75. I[10-04|13:54:30.387] Starting MempoolReactor module=mempool impl=MempoolReactor
  76. I[10-04|13:54:30.387] Starting BlockchainReactor module=blockchain impl=BlockchainReactor
  77. I[10-04|13:54:30.387] Starting ConsensusReactor module=consensus impl=ConsensusReactor
  78. I[10-04|13:54:30.387] ConsensusReactor module=consensus fastSync=false
  79. I[10-04|13:54:30.387] Starting ConsensusState module=consensus impl=ConsensusState
  80. I[10-04|13:54:30.387] Starting WAL module=consensus wal=/home/vagrant/.tendermint/data/cs.wal/wal impl=WAL
  81. I[10-04|13:54:30.388] Starting TimeoutTicker module=consensus impl=TimeoutTicker
  82. ```
  83. Notice the second row where Tendermint Core reports that "This node is a
  84. validator". It also could be just an observer (regular node).
  85. Next we replay all the messages from the WAL.
  86. ```sh
  87. I[10-04|13:54:30.390] Catchup by replaying consensus messages module=consensus height=91
  88. I[10-04|13:54:30.390] Replay: New Step module=consensus height=91 round=0 step=RoundStepNewHeight
  89. I[10-04|13:54:30.390] Replay: Done module=consensus
  90. ```
  91. "Started node" message signals that everything is ready for work.
  92. ```sh
  93. I[10-04|13:54:30.391] Starting RPC HTTP server on tcp socket 0.0.0.0:26657 module=rpc-server
  94. I[10-04|13:54:30.392] Started node module=main nodeInfo="NodeInfo{id: DF22D7C92C91082324A1312F092AA1DA197FA598DBBFB6526E, moniker: anonymous, network: test-chain-3MNw2N [remote , listen 10.0.2.15:26656], version: 0.11.0-10f361fc ([wire_version=0.6.2 p2p_version=0.5.0 consensus_version=v1/0.2.2 rpc_version=0.7.0/3 tx_index=on rpc_addr=tcp://0.0.0.0:26657])}"
  95. ```
  96. Next follows a standard block creation cycle, where we enter a new
  97. round, propose a block, receive more than 2/3 of prevotes, then
  98. precommits and finally have a chance to commit a block. For details,
  99. please refer to [Byzantine Consensus
  100. Algorithm](https://github.com/tendermint/spec/blob/master/spec/consensus/consensus.md).
  101. ```sh
  102. I[10-04|13:54:30.393] enterNewRound(91/0). Current: 91/0/RoundStepNewHeight module=consensus
  103. I[10-04|13:54:30.393] enterPropose(91/0). Current: 91/0/RoundStepNewRound module=consensus
  104. I[10-04|13:54:30.393] enterPropose: Our turn to propose module=consensus proposer=125B0E3C5512F5C2B0E1109E31885C4511570C42 privValidator="PrivValidator{125B0E3C5512F5C2B0E1109E31885C4511570C42 LH:90, LR:0, LS:3}"
  105. I[10-04|13:54:30.394] Signed proposal module=consensus height=91 round=0 proposal="Proposal{91/0 1:21B79872514F (-1,:0:000000000000) {/10EDEDD7C84E.../}}"
  106. I[10-04|13:54:30.397] Received complete proposal block module=consensus height=91 hash=F671D562C7B9242900A286E1882EE64E5556FE9E
  107. I[10-04|13:54:30.397] enterPrevote(91/0). Current: 91/0/RoundStepPropose module=consensus
  108. I[10-04|13:54:30.397] enterPrevote: ProposalBlock is valid module=consensus height=91 round=0
  109. I[10-04|13:54:30.398] Signed and pushed vote module=consensus height=91 round=0 vote="Vote{0:125B0E3C5512 91/00/1(Prevote) F671D562C7B9 {/89047FFC21D8.../}}" err=null
  110. I[10-04|13:54:30.401] Added to prevote module=consensus vote="Vote{0:125B0E3C5512 91/00/1(Prevote) F671D562C7B9 {/89047FFC21D8.../}}" prevotes="VoteSet{H:91 R:0 T:1 +2/3:F671D562C7B9242900A286E1882EE64E5556FE9E:1:21B79872514F BA{1:X} map[]}"
  111. I[10-04|13:54:30.401] enterPrecommit(91/0). Current: 91/0/RoundStepPrevote module=consensus
  112. I[10-04|13:54:30.401] enterPrecommit: +2/3 prevoted proposal block. Locking module=consensus hash=F671D562C7B9242900A286E1882EE64E5556FE9E
  113. I[10-04|13:54:30.402] Signed and pushed vote module=consensus height=91 round=0 vote="Vote{0:125B0E3C5512 91/00/2(Precommit) F671D562C7B9 {/80533478E41A.../}}" err=null
  114. I[10-04|13:54:30.404] Added to precommit module=consensus vote="Vote{0:125B0E3C5512 91/00/2(Precommit) F671D562C7B9 {/80533478E41A.../}}" precommits="VoteSet{H:91 R:0 T:2 +2/3:F671D562C7B9242900A286E1882EE64E5556FE9E:1:21B79872514F BA{1:X} map[]}"
  115. I[10-04|13:54:30.404] enterCommit(91/0). Current: 91/0/RoundStepPrecommit module=consensus
  116. I[10-04|13:54:30.405] Finalizing commit of block with 0 txs module=consensus height=91 hash=F671D562C7B9242900A286E1882EE64E5556FE9E root=E0FBAFBF6FCED8B9786DDFEB1A0D4FA2501BADAD
  117. I[10-04|13:54:30.405] Block{
  118. Header{
  119. ChainID: test-chain-3MNw2N
  120. Height: 91
  121. Time: 2017-10-04 13:54:30.393 +0000 UTC
  122. NumTxs: 0
  123. LastBlockID: F15AB8BEF9A6AAB07E457A6E16BC410546AA4DC6:1:D505DA273544
  124. LastCommit: 56FEF2EFDB8B37E9C6E6D635749DF3169D5F005D
  125. Data:
  126. Validators: CE25FBFF2E10C0D51AA1A07C064A96931BC8B297
  127. App: E0FBAFBF6FCED8B9786DDFEB1A0D4FA2501BADAD
  128. }#F671D562C7B9242900A286E1882EE64E5556FE9E
  129. Data{
  130. }#
  131. Commit{
  132. BlockID: F15AB8BEF9A6AAB07E457A6E16BC410546AA4DC6:1:D505DA273544
  133. Precommits: Vote{0:125B0E3C5512 90/00/2(Precommit) F15AB8BEF9A6 {/FE98E2B956F0.../}}
  134. }#56FEF2EFDB8B37E9C6E6D635749DF3169D5F005D
  135. }#F671D562C7B9242900A286E1882EE64E5556FE9E module=consensus
  136. I[10-04|13:54:30.408] Executed block module=state height=91 validTxs=0 invalidTxs=0
  137. I[10-04|13:54:30.410] Committed state module=state height=91 txs=0 hash=E0FBAFBF6FCED8B9786DDFEB1A0D4FA2501BADAD
  138. I[10-04|13:54:30.410] Recheck txs module=mempool numtxs=0 height=91
  139. ```