Files
BitLogger/docs/api/sink-config-to-json.md
2026-05-12 13:47:04 +08:00

70 lines
1.7 KiB
Markdown

---
name: sink-config-to-json
group: api
category: config
update-time: 20260512
description: Convert SinkConfig into a JSON value for export and nested logger config serialization.
key-word:
- sink
- config
- json
- public
---
## Sink-config-to-json
Convert `SinkConfig` into a `JsonValue`. This helper is used directly for sink export and indirectly when exporting `LoggerConfig`.
### Interface
```moonbit
pub fn sink_config_to_json(config : SinkConfig) -> @json_parser.JsonValue {}
```
#### input
- `config : SinkConfig` - Sink config to export.
#### output
- `JsonValue` - JSON representation of the sink configuration.
### Explanation
Detailed rules explaining key parameters and behaviors
- The output includes `kind`, `path`, `append`, `auto_flush`, and `text_formatter`.
- `rotation` is only included when present.
- The exported shape is schema-oriented and shared by larger config export helpers.
- This helper is especially useful when building larger config payloads manually.
### How to Use
Here are some specific examples provided.
#### When Need Sink-only Export
When only the sink portion should be emitted:
```moonbit
let json = sink_config_to_json(SinkConfig::new(kind=SinkKind::TextConsole))
```
In this example, sink config can be exported independently of the full logger config.
#### When Compose A Larger JSON Payload
When sink config should be embedded elsewhere:
```moonbit
let sink_json = sink_config_to_json(config.sink)
```
In this example, sink config becomes a structured JSON component.
### Error Case
e.g.:
- If `rotation` is absent, it is simply omitted from the exported sink config.
- If file-related fields are unused by the sink kind, they are still exported according to the stable config shape.