Files
2026-07-17 16:24:06 +08:00

1.3 KiB

Text Formatting And Style Tags

Formatting changes presentation while keeping the record's level, target, message, and fields intact. Use text output for people; use JSON output when another system parses the record.

Customize The Text Shape

let logger = @log.build_logger(
  @log.text_console(
    min_level=@log.Level::Info,
    target="service",
    text_formatter=@log.TextFormatterConfig::new(
      show_timestamp=false,
      field_separator=",",
      template="[{level}] {target} {message} :: {fields}",
    ),
  ),
)

logger.info("ready", fields=[@log.field("port", "8080")])

The template controls the visible order. Keep fields separate from the message so they can still be rendered consistently across sinks.

Add Named Styles

let formatter = @log.text_formatter(
  show_timestamp=false,
  color_mode=@log.ColorMode::Always,
).with_style_tags(
  @log.default_style_tag_registry()
  .set_tag("accent", fg=Some("#4cc9f0"), bold=true),
)

Style tags are terminal presentation metadata. Do not use them as the only way to encode operational meaning; preserve that meaning in level, target, and fields.

API Reference