Skip to content

Parse-async-logger-config-text ​

Parse raw JSON text into AsyncLoggerConfig. This helper is the text-entry counterpart to AsyncLoggerConfig::new(...) when async queue and flush policy should be configured from serialized data.

Interface ​

moonbit
pub fn parse_async_logger_config_text(input : String) -> AsyncLoggerConfig raise {

input ​

  • input : String - Raw JSON text describing async queue, batching, linger, and flush settings.

output ​

  • AsyncLoggerConfig - Parsed async runtime config value.

Explanation ​

Detailed rules explaining key parameters and behaviors

  • This helper parses only the async config portion, not the embedded sync LoggerConfig.
  • Missing max_pending, overflow, max_batch, linger_ms, and flush fields fall back to the same defaults used by AsyncLoggerConfig::new(...).
  • Parsed values then flow through AsyncLoggerConfig::new(...), so max_batch and linger_ms receive the same constructor normalization.
  • Overflow parsing accepts both DropNewest and the compatibility alias DropLatest.
  • Flush parsing accepts both Never and the compatibility alias None.
  • The error surface here is the general Failure path used by the async config utilities, including malformed JSON, non-object roots, wrong field types, and unsupported enum text.
  • Use this API when async policy comes from config text but sink choice is still assembled elsewhere.

How to Use ​

Here are some specific examples provided.

When Need Async Queue Policy From JSON ​

When async queue behavior is loaded separately from sync sink config:

moonbit
let config = parse_async_logger_config_text(
  "{\"max_pending\":8,\"overflow\":\"DropOldest\",\"max_batch\":3,\"linger_ms\":25,\"flush\":\"Batch\"}",
)

In this example, async queue and flush policy are parsed from text into a typed config object.

When Need Alias-friendly Async Policy Parsing ​

When external config may use compatibility labels:

moonbit
let config = parse_async_logger_config_text(
  "{\"overflow\":\"DropLatest\",\"flush\":\"None\"}",
)

In this example, parser aliases are accepted and normalized into the public enum values.

Error Case ​

e.g.:

  • If the JSON text is malformed, parsing raises an error.

  • If enum names such as overflow or flush are unsupported, parsing raises an error.

  • If a field is present with the wrong JSON type, parsing raises an error instead of silently coercing it.

Notes ​

  1. Use this helper when only async policy is text-driven.

  2. Use parse_async_logger_build_config_text(...) when both sync logger config and async config come from the same JSON payload.

  3. Omitted fields fall back to the default async config values rather than causing a missing-field error.

Published from the repository docs folder with VitePress.