Skip to content

Formatted-console-sink

Create a console sink from a RecordFormatter. This is the low-level console output constructor for cases where code already has a record-to-string formatter function and does not want to go through TextFormatter first.

Interface

moonbit
pub fn formatted_console_sink(formatter : RecordFormatter) -> FormattedConsoleSink {

input

  • formatter : RecordFormatter - Function used to render each record into a final string.

output

  • FormattedConsoleSink - Console sink that prints the formatter output for each record.

Explanation

Detailed rules explaining key parameters and behaviors

  • This helper stores the provided formatter directly inside the sink.
  • The sink prints exactly the string returned by the formatter.
  • It is lower-level than text_console_sink(...) because it works with arbitrary RecordFormatter functions instead of TextFormatter values.
  • Use it when formatting logic is already expressed as code rather than formatter configuration data.

How to Use

Here are some specific examples provided.

When Need A Custom Record-to-string Console Renderer

When console output should come from a hand-written formatting function:

moonbit
let formatter : RecordFormatter = fn(rec) { rec.level.label() + ": " + rec.message }
let logger = Logger::new(formatted_console_sink(formatter), target="fmt")

In this example, the sink prints exactly the custom formatter output.

When Already Working With RecordFormatter Values

When formatter creation already happened elsewhere and should be reused directly:

moonbit
fn make_sink(formatter : RecordFormatter) -> FormattedConsoleSink {
  formatted_console_sink(formatter)
}

In this example, the low-level sink constructor avoids converting through TextFormatter first.

Error Case

e.g.:

  • If the formatter omits useful fields or target information, console output may become harder to interpret.

  • If a configurable text formatting policy is preferred over a code-defined function, text_console_sink(...) is usually the better API.

Notes

  1. Use this helper when the formatter is already a RecordFormatter.

  2. Use text_console_sink(...) when the source formatting policy is a TextFormatter value.

Published from the repository docs folder with VitePress.