Logging
Overview
zeknd has built-in configurable logging. The user can configure the log level and the log destination.
#zeknd SDK Logging
#Configuring the log level
The zeknd SDK provides two types of logs:
blockchain logs (blockchain transactions and consensus events).
zeknd SDK logs (generated by the SDK itself, i.e emitted events).
As an example, add the following to your zeknd.yaml to set logging levels:
zekndLogLevel: debug # sets the log level for events emitted from the zeknd SDK
BlockchainLogLevel: error # sets the log level for the blockchain logs.Defaults for the zeknd
LogLevelandBlockchainLogLevelareinfoanderrorrespectively.
#Configuring the log destination
Currently, a file target is supported for the zeknd logs:
LogDestination: "file://zeknd.log" # zeknd.log is also the default target.To log to stderr, specify the destination as file://-
#Contract logging
Configurations like log level and destination are separate for contracts. These are set using environment variables.
Example: CONTRACT_LOG_LEVEL=debug CONTRACT_LOG_DESTINATION="file://-" $zeknd_EXE run
This will set the contract log level to debug and the destination to stderr.
The default for log level and destination are info and file://contract.log respectively.
#Logging from the contract
The contract context has a pre-configured logger that can be used for structured logging. Let's look at an example:
ctx.Logger().Info("Created account", "owner", owner, "address", addr)will generate a log line like:
ts=2018-05-13T02:06:49.817229589Z module=zeknd level=info _msg="Created account" owner=godbole4 address="\ufffd8\ufffd\ufffd\ufffd\ufffd\ufffd$Y+H\ufffd\u0012\u000c]\u001a\ufffd\ufffd\ufffd\ufffd"Available methods on the context logger are Error, Warn, Info, and Debug.
Last updated