Skip to content

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).

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.

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 = debug
info(l, "Server started")
warn(l, "Connection slow")
debug(l, "Request payload: " + payload)
trace(l, "Entering handler")

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 debug
debug(l2, "hidden") // not printed
info(l2, "visible") // [INFO] visible

For string-named levels, use level_num("info") then set_level(l, level_num("info")).

FunctionDescription
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) -> LoggerReturn a new Logger at the given level
get_level(l: Logger) -> intRead 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) -> intMap "trace"/"debug"/"info"/"warn"/"error" to its numeric level