BitLogger
BitLogger is a structured logging library for MoonBit projects.
Overview
BitLogger gives you consistent levels, targets, structured fields, configurable text output, native file logging, and an async logging layer.
Quick Start
moonbit
let logger = build_logger(
text_console(
min_level=Level::Info,
target="demo",
text_formatter=TextFormatterConfig::new(show_timestamp=false, separator=" | "),
),
)
logger.info("starting", fields=[field("port", "8080")])
ignore(logger.flush())Start with console(...), json_console(...), text_console(...), or file(...), then add with_queue(...) or with_file_rotation(...) only when needed.
Use Logger::new(...) when you want to assemble custom sink graphs directly.
Support Status
- Current local verification covers
native,js,wasm, 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
Main Features
- 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
Examples
examples/console_basic/: minimal console and JSON console exampleexamples/text_formatter/: text formatting and template exampleexamples/style_tags/: style tags and colored output exampleexamples/config_build/: config-based build exampleexamples/presets/: common preset combinationsexamples/file_rotation/: native file logging and rotation exampleexamples/async_basic/: async logging example
Documentation
- 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(...)