Skip to content

Global-debug

Emit a debug-level record through the shared default logger. This is the global convenience wrapper for log(Level::Debug, ...).

Interface

moonbit
pub fn debug(message : String, fields~ : Array[Field] = []) -> Unit {}

input

  • message : String - Debug message text.
  • fields : Array[Field] - Optional structured fields attached to the record.

output

  • Unit - No return value. The record is handled through the shared default logger.

Explanation

Detailed rules explaining key parameters and behaviors

  • This helper delegates to default_logger().debug(...).
  • Each call therefore reads the current shared default threshold and target at write time instead of holding one long-lived logger value internally.
  • It uses the shared console sink and current default target.
  • Debug output is typically intended for development and troubleshooting.
  • This helper is best suited to small apps or code paths that intentionally rely on the shared logger.

How to Use

Here are some specific examples provided.

When Need Simple Global Debug Logging

When code wants quick diagnostics without wiring a logger variable:

moonbit
set_default_min_level(Level::Debug)
set_default_target("cache")
debug("cache refreshed")

In this example, the shared global path starts accepting debug records under the cache target.

If set_default_target(...) or set_default_min_level(...) changes later, future debug(...) calls will observe those updated shared defaults automatically.

When Attach Structured Debug Context

When a debug event should include machine-readable detail:

moonbit
debug("session loaded", fields=[field("user_id", "42")])

In this example, the global shortcut still supports structured fields.

Error Case

e.g.:

  • If the shared minimum level is above Debug, the record is skipped.

  • If different modules need distinct targets or sinks, a shared global debug path may be too coarse.

Notes

  1. Prefer explicit loggers once application logging becomes subsystem-specific.

  2. Future calls pick up later shared-default changes because the helper forwards through a fresh default_logger() each time.

  3. Use set_default_min_level(...) before expecting global debug output to appear.

Published from the repository docs folder with VitePress.