Files
BitLogger/docs/README-en.md
T
2026-07-19 17:04:27 +08:00

3.1 KiB

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.

Start With A Working Flow

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.

1. Install

moon new log-demo
cd log-demo
moon add Nanaloveyuki/BitLogger@0.7.2

2. Import And Log

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

Support Status

  • CI checks and tests native, wasm, js, and wasm-gc for the main src package and src-async
  • llvm is still treated as experimental in the current release context and was not locally re-verified in the current environment
  • The source packages still declare wasm support alongside native, llvm, js, and wasm-gc; see target-verification.md for the current release-facing verification boundary
  • File output is a native capability; check native_files_supported() in cross-target code
  • src-async is available, while examples/async_basic is 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(...) and build_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, and trace_state fields

Documentation

  • 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 summaries
  • docs/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(...)