Skip to content

Logger-config

Create a LoggerConfig value describing level, target, timestamp behavior, sink shape, and optional queue wrapping. This is the main typed configuration object consumed by build_logger(...) and async build helpers.

Interface

moonbit
pub fn LoggerConfig::new(
  min_level~ : Level = Level::Info,
  target~ : String = "",
  timestamp~ : Bool = false,
  sink~ : SinkConfig = default_sink_config(),
  queue~ : QueueConfig? = None,
) -> LoggerConfig {}

input

  • min_level : Level - Global level gate.
  • target : String - Default target namespace.
  • timestamp : Bool - Whether the built logger should emit timestamps.
  • sink : SinkConfig - Configured sink shape.
  • queue : QueueConfig? - Optional synchronous queue wrapper.

output

  • LoggerConfig - Main logger configuration object.

Explanation

Detailed rules explaining key parameters and behaviors

  • LoggerConfig is the top-level typed representation for synchronous config-driven logging.
  • sink describes the final sink shape before optional queue wrapping.
  • queue=None means no configured synchronous queue layer.
  • This same type is embedded into async build config as the synchronous sink/runtime portion.
  • build_logger(...) consumes this value directly by building the base runtime sink from sink, optionally wrapping it with queue, and then applying min_level, target, and timestamp onto the resulting Logger[RuntimeSink].
  • build_async_logger(...) reuses this same synchronous config path before adding the outer async layer, while build_async_text_logger(...) only uses the selected text-oriented fields instead of the full sync runtime-sink build path.

How to Use

Here are some specific examples provided.

When Build Config In Code Instead Of JSON

When application bootstrapping prefers typed config values:

moonbit
let config = LoggerConfig::new(
  min_level=Level::Warn,
  target="svc",
  timestamp=true,
  sink=SinkConfig::new(kind=SinkKind::TextConsole),
)

In this example, the logger configuration is explicit and strongly typed.

When Prepare Config For A Later Builder

When config is assembled in one place and built later:

moonbit
let config = LoggerConfig::new(queue=Some(QueueConfig::new(16)))
let logger = build_logger(config)

In this example, the config object becomes the handoff boundary between assembly and runtime construction.

Error Case

e.g.:

  • If sink describes a capability-limited backend shape such as native file output on a non-native target, later runtime behavior still follows backend support rules.

  • If target is empty, the configuration is still valid.

Notes

  1. This is the core typed config object for sync logger assembly.

  2. Prefer this API when config is generated in code rather than parsed from text.

  3. Use default_logger_config() when callers want the same field defaults as the parser and runtime helpers without spelling them out manually.

Published from the repository docs folder with VitePress.