BitLogger is a structured logging library for MoonBit projects.
BitLogger gives you consistent levels, targets, structured fields, configurable text output, native file logging, and an async logging layer.
The documentation is organized around complete usage flows. Start with an executable logger, then move into file output, configuration, async lifecycle, and extensions. The API reference remains the precise symbol-level reference.
moon new log-demo
cd log-demo
moon add Nanaloveyuki/BitLogger@0.7.3Add the package import to your application's moon.pkg:
import {
"Nanaloveyuki/BitLogger/src" @log,
}fn main {
let logger = @log.build_logger(
@log.console(min_level=@log.Level::Info, target="app"),
)
logger.info("server started", fields=[@log.field("port", "8080")])
}Continue with the Examples guide: console fields, file rotation, JSON configuration, and async lifecycle are each documented as a complete path.
- CI checks and tests
native,wasm,js, andwasm-gcfor the mainsrcpackage andsrc-async llvmis still treated as experimental in the current release context and was not locally re-verified in the current environment- The source packages still declare
wasmsupport alongsidenative,llvm,js, andwasm-gc; seetarget-verification.mdfor the current release-facing verification boundary - File output is a native capability; check
native_files_supported()in cross-target code src-asyncis available, whileexamples/async_basicis still shipped as a native entry example
- Structured logs with levels, targets, messages, and fields
- Multiple outputs: console, JSON console, text console, and file
- Custom text formatting with templates, style tags, and color control
- Config-based builders:
build_logger(...)andbuild_async_logger(...) - Composition helpers: queue, filter, patch, fanout, split, callback
- Separate async package under
src-async - Trace-context binding through standard
trace_id,span_id,trace_flags, andtrace_statefields
- Examples: complete application-facing usage flows
- Extend: queueing, sink composition, formatting, and target boundaries
- API index: canonical API reference, organized as one public API per file
- src package README: package-level usage notes and target reminders
docs/changes/: versioned release notes and publish-facing change summariesdocs/dev/: developer reference material kept in the repository, intentionally excluded from the public static docs site
Common entry points: text_console(...), file(...), with_queue(...), build_logger(...), build_async_logger(...)