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 and BlockchainLogLevel are info and error 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.