Documentation Index
Fetch the complete documentation index at: https://docs.simular.ai/llms.txt
Use this file to discover all available pages before exploring further.
Function: initLogger()
initLogger(Defined in: index.d.ts:1286 Initialize the logger. You usually don’t need to call this. The package’scb?,spec?):void
main entry
(wrapped.js) calls initLogger() with no arguments on first
evaluation, so simply import '@simular-ai/simulang-js' is enough to
see [level] message records on stderr. Call this directly
only when you want to override that default — to forward records to
a JS callback, change the filter spec, or silence everything.
- No callback (
initLogger()orinitLogger(null, spec)): records are formatted as[level] messageand written to stderr. - With a callback (
initLogger(cb, spec)): records are forwarded to the JS callback via a non-blocking, unref’d threadsafe function. Use this for GUI panels, file appenders, or routing through a logging library like pino. The unref’d dispatch means the logger does not keep the Node event loop alive on its own.
spec to read RUST_LOG (falls back to "simulang_rs=info,warn"
when RUST_LOG is unset — info-level records from simulang’s own
actions, warn-level from every other crate). Pass an explicit spec
to override RUST_LOG. Syntax is identical to RUST_LOG:
"info"— global level"simulang_rs=debug,warn"— per-module override + default"simulang_rs::windows=trace,simulang_rs::macos=debug,warn"— multiple"off"— disable all logging
console.log
is fine — that’s not a log::*! call) or transitively via another
simulang-js function whose Rust side emits a record, you’d feed the
relay another record, which queues another callback invocation, and so
on forever. The callback itself runs on the Node main thread; the
non-blocking dispatch from Rust is what creates the recursion risk.
Parameters
cb?
((arg) => unknown) | null
spec?
string | null
Returns
void
