Skip to content

Json-console ​

Create a LoggerConfig preset for structured JSON output on the console. This preset is intended for config-driven logging pipelines that want machine-readable terminal output.

Interface ​

moonbit
pub fn json_console(
  min_level~ : Level = Level::Info,
  target~ : String = "",
  timestamp~ : Bool = false,
) -> LoggerConfig {

input ​

  • min_level : Level - Minimum enabled level for the preset.
  • target : String - Default target stored in the returned config.
  • timestamp : Bool - Whether emitted records should include timestamps.

output ​

  • LoggerConfig - Config using SinkKind::JsonConsole with no queue wrapper by default.

Explanation ​

Detailed rules explaining key parameters and behaviors

  • This preset always returns sink.kind=SinkKind::JsonConsole.
  • queue=None by default, so JSON records are not buffered unless with_queue(...) is added later.
  • The preset does not carry file-only fields such as path or rotation in a meaningful way because the sink kind is not file-based.

How to Use ​

Here are some specific examples provided.

When Need Structured Console Output ​

When logs should be easy to collect or parse from stdout:

moonbit
let config = json_console(min_level=Level::Info, target="api", timestamp=true)
let logger = build_logger(config)

In this example, records are emitted through the JSON console sink.

And timestamps are enabled at the top-level logger config.

Error Case ​

e.g.:

  • If target is empty, the preset still returns a valid config.

  • If you need file rotation or file paths, this preset is the wrong sink shape and should be replaced with file(...).

Notes ​

  1. Use this preset when downstream tooling expects structured console logs.

  2. with_file_rotation(...) does not change this preset because it only applies to file configs.

Published from the repository docs folder with VitePress.