Files
BitLogger/docs/api/logger-config.md
T
2026-05-12 13:32:15 +08:00

2.6 KiB

name, group, category, update-time, description, key-word
name group category update-time description key-word
logger-config api config 20260512 Build the main logger configuration object used by config-driven runtime logger assembly.
logger
config
runtime
public

Logger-config

Create a LoggerConfig value describing level, target, timestamp behavior, sink shape, and optional queue wrapping. This is the main typed configuration object consumed by build_logger(...) and async build helpers.

Interface

pub fn LoggerConfig::new(
  min_level~ : Level = Level::Info,
  target~ : String = "",
  timestamp~ : Bool = false,
  sink~ : SinkConfig = default_sink_config(),
  queue~ : QueueConfig? = None,
) -> LoggerConfig {}

input

  • min_level : Level - Global level gate.
  • target : String - Default target namespace.
  • timestamp : Bool - Whether the built logger should emit timestamps.
  • sink : SinkConfig - Configured sink shape.
  • queue : QueueConfig? - Optional synchronous queue wrapper.

output

  • LoggerConfig - Main logger configuration object.

Explanation

Detailed rules explaining key parameters and behaviors

  • LoggerConfig is the top-level typed representation for synchronous config-driven logging.
  • sink describes the final sink shape before optional queue wrapping.
  • queue=None means no configured synchronous queue layer.
  • This same type is embedded into async build config as the synchronous sink/runtime portion.

How to Use

Here are some specific examples provided.

When Build Config In Code Instead Of JSON

When application bootstrapping prefers typed config values:

let config = LoggerConfig::new(
  min_level=Level::Warn,
  target="svc",
  timestamp=true,
  sink=SinkConfig::new(kind=SinkKind::TextConsole),
)

In this example, the logger configuration is explicit and strongly typed.

When Prepare Config For A Later Builder

When config is assembled in one place and built later:

let config = LoggerConfig::new(queue=Some(QueueConfig::new(16)))
let logger = build_logger(config)

In this example, the config object becomes the handoff boundary between assembly and runtime construction.

Error Case

e.g.:

  • If sink describes a capability-limited backend shape such as native file output on a non-native target, later runtime behavior still follows backend support rules.

  • If target is empty, the configuration is still valid.

Notes

  1. This is the core typed config object for sync logger assembly.

  2. Prefer this API when config is generated in code rather than parsed from text.