log
The log module provides leveled logging with filtering via an
explicit Logger value (R8 W8 Cluster A 2026-05-24 — replaces the
pre-R8 module-mutable global).
Import
Section titled “Import”from std::core::log use { logger, logger_at, set_level, get_level, LEVEL_TRACE, LEVEL_DEBUG, LEVEL_INFO, LEVEL_WARN, LEVEL_ERROR, trace, debug, info, warn}Note: error is also exported but shadows the comptime builtin
error. Import it under an alias if needed, or call only the other
levels at the top level.
Levels
Section titled “Levels”From most to least verbose: LEVEL_TRACE (0), LEVEL_DEBUG (1),
LEVEL_INFO (2), LEVEL_WARN (3), LEVEL_ERROR (4).
logger() defaults to LEVEL_DEBUG — all messages from debug up are
shown.
let l = logger() // default = debuginfo(l, "Server started")warn(l, "Connection slow")debug(l, "Request payload: " + payload)trace(l, "Entering handler")Set Level
Section titled “Set Level”Logger is immutable — set_level returns a fresh value with the
updated minimum level.
let l = logger()let l2 = set_level(l, LEVEL_INFO) // hide trace and debugdebug(l2, "hidden") // not printedinfo(l2, "visible") // [INFO] visibleFor string-named levels, use level_num("info") then set_level(l, level_num("info")).
Functions
Section titled “Functions”| Function | Description |
|---|---|
logger() | Construct a Logger at LEVEL_DEBUG |
logger_at(level: int) | Construct a Logger at the given numeric level |
set_level(l: Logger, level: int) -> Logger | Return a new Logger at the given level |
get_level(l: Logger) -> int | Read the Logger’s current minimum level |
trace(l, msg) | Log at trace level |
debug(l, msg) | Log at debug level |
info(l, msg) | Log at info level |
warn(l, msg) | Log at warn level |
error(l, msg) | Log at error level (import-rename to avoid comptime builtin shadow) |
level_num(name: string) -> int | Map "trace"/"debug"/"info"/"warn"/"error" to its numeric level |