Overview
Loom has built-in configurable logging. The user can configure the log level and the log destination.
Loom SDK Logging
Configuring the log level
The Loom SDK provides two types of logs:
- blockchain logs (blockchain transactions and consensus events).
- Loom SDK logs (generated by the SDK itself, i.e emitted events).
As an example, add the following to your loom.yaml
to set logging levels:
LoomLogLevel: debug # sets the log level for events emitted from the loom SDK
BlockchainLogLevel: error # sets the log level for the blockchain logs.
Defaults for the
LoomLogLevel
andBlockchainLogLevel
areinfo
anderror
respectively.
Configuring the log destination
Currently, a file target is supported for the loom logs:
LogDestination: "file://loom.log" # loom.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://-" $LOOM_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=loom 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
.