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

97 lines
2.7 KiB
Markdown

---
name: logger-config
group: api
category: config
update-time: 20260512
description: Build the main logger configuration object used by config-driven runtime logger assembly.
key-word:
- 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
```moonbit
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:
```moonbit
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:
```moonbit
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
Notes are here.
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.
3. Use `logger_config_to_json(...)` and `stringify_logger_config(...)` for export.
4. `AsyncLoggerBuildConfig` reuses this type rather than inventing a second sync logger schema.