Logging from a Scala Agent
The Scala SDK provides golem.wasi.Logging — a typed facade over wasi:logging/logging with convenience methods for each log level and an optional context parameter.
Quick Start
Import and use the Logging object directly — no initialization needed:
import golem.wasi.Logging
Logging.info("order created: " + orderId)
Logging.debug("processing item: " + itemId)
Logging.warn("retry attempt " + attempt + " for request " + reqId)
Logging.error("failed to connect: " + err.getMessage)Log Levels
| Method | WASI Level | Use for |
|---|---|---|
Logging.trace(msg) | trace | Fine-grained control flow |
Logging.debug(msg) | debug | Debugging information |
Logging.info(msg) | info | Monitoring, normal operations |
Logging.warn(msg) | warn | Hazardous situations |
Logging.error(msg) | error | Serious errors |
Logging.critical(msg) | critical | Fatal errors |
Context Strings
Every method accepts an optional context parameter (defaults to ""). Use it to scope log entries to a subsystem or request:
Logging.info("connected to database", context = "db")
Logging.debug(s"query took ${ms}ms", context = "db/query")
Logging.error(s"timeout after ${retries} retries", context = "http-client")For the lowest-level API, call Logging.log directly:
Logging.log(Logging.Level.Critical, "shutdown", "system is shutting down")Using println / System.err.println
Standard output and error also work and are captured by Golem:
println("stdout message")
System.err.println("stderr message")These appear in golem agent stream output but lack log levels and context. Prefer Logging.* methods for structured, filterable logging.
Viewing Logs
Stream live agent output:
golem agent stream '<agent-id>'Or during an invocation:
golem agent invoke '<agent-id>' '<method>' [args]Key Points
- No setup needed —
golem.wasi.Loggingis available fromgolem-scala-corewhich is already in the project dependencies - All methods map directly to the
wasi:logging/loggingWASI interface - Context strings help group and filter log entries by subsystem
- Logs are recorded in the oplog and visible via
golem agent streamandgolem agent invoke - Logging is a side effect — during replay (crash recovery), log calls from replayed operations are skipped
Last updated on