Files
BitLogger/docs/api/text-formatter-config.md
T
2026-05-12 13:47:04 +08:00

2.9 KiB

name, group, category, update-time, description, key-word
name group category update-time description key-word
text-formatter-config api config 20260512 Create a serializable formatter config object that bridges JSON config and runtime text formatting.
formatter
config
json
public

Text-formatter-config

Create a TextFormatterConfig object for config-driven text rendering. This is the serializable counterpart to text_formatter(...) and is the main bridge between JSON config parsing and runtime formatter construction.

Interface

pub fn TextFormatterConfig::new(
  show_timestamp~ : Bool = true,
  show_level~ : Bool = true,
  show_target~ : Bool = true,
  show_fields~ : Bool = true,
  separator~ : String = " ",
  field_separator~ : String = " ",
  template~ : String = "",
  color_mode~ : ColorMode = ColorMode::Never,
  color_support~ : ColorSupport = ColorSupport::TrueColor,
  style_markup~ : StyleMarkupMode = StyleMarkupMode::Full,
  target_style_markup~ : StyleMarkupMode = StyleMarkupMode::Disabled,
  fields_style_markup~ : StyleMarkupMode = StyleMarkupMode::Disabled,
  style_tags~ : Map[String, TextStyle] = {},
) -> TextFormatterConfig {}

input

  • Parameters mirror text_formatter(...) but are stored in a serializable config object.
  • style_tags : Map[String, TextStyle] - Local tag definitions stored as plain config data.

output

  • TextFormatterConfig - Config object that can later be serialized or converted to a runtime formatter.

Explanation

Detailed rules explaining key parameters and behaviors

  • This type is data-oriented and suitable for JSON parse/stringify workflows.
  • to_formatter() converts config into a runtime TextFormatter.
  • style_tags are stored as concrete style objects instead of alias-style runtime behavior.
  • This config type is used by SinkConfig, LoggerConfig, and config-driven sink assembly.

How to Use

Here are some specific examples provided.

When Need Config-built Text Output

When text formatting should be configured rather than hard-coded:

let formatter = TextFormatterConfig::new(
  show_timestamp=false,
  template="[{level}] {message}",
  color_mode=ColorMode::Always,
)

In this example, the formatter settings are stored as config rather than a runtime-only formatter.

And the same value can be serialized or embedded in larger logger config objects.

When Need Runtime Bridge After Parsing

When config has already been parsed from JSON:

let runtime_formatter = config.sink.text_formatter.to_formatter()

In this example, JSON-driven settings become a real runtime formatter only when needed.

Error Case

e.g.:

  • If template is empty, runtime formatting falls back to the normal part-assembly path.

  • If style_tags is empty, no local formatter tag registry is created.

Notes

  1. Prefer this API when formatter behavior must be stored, parsed, or serialized.

  2. Prefer text_formatter(...) when writing direct runtime code without config.