mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-05-30 15:42:25 +00:00
📝 Align API docs with updated interface template
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user