mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-30 15:04:48 +00:00
📝 document public config and level aliases
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
---
|
||||
name: sink-kind
|
||||
group: api
|
||||
category: config
|
||||
update-time: 20260613
|
||||
description: Public sink kind enum alias used by SinkConfig and config parsing.
|
||||
key-word:
|
||||
- sink
|
||||
- config
|
||||
- alias
|
||||
- public
|
||||
---
|
||||
|
||||
## Sink-kind
|
||||
|
||||
`SinkKind` is the public enum that selects which built-in sink shape a `SinkConfig` should build. It is a direct alias to the internal config enum, so config builders, JSON parsers, and sink serialization helpers all use the same small set of variants.
|
||||
|
||||
### Interface
|
||||
|
||||
```moonbit
|
||||
pub type SinkKind = @utils.SinkKind
|
||||
```
|
||||
|
||||
#### output
|
||||
|
||||
- `SinkKind` - Public sink selection enum with the variants `Console`, `JsonConsole`, `TextConsole`, and `File`.
|
||||
|
||||
### Explanation
|
||||
|
||||
Detailed rules explaining key parameters and behaviors
|
||||
|
||||
- This is a type alias, not a wrapper or a new runtime sink implementation.
|
||||
- `SinkKind::Console` selects the basic text console sink.
|
||||
- `SinkKind::JsonConsole` selects JSON line output.
|
||||
- `SinkKind::TextConsole` selects text console output driven by `TextFormatterConfig`.
|
||||
- `SinkKind::File` selects file-backed output and requires a non-empty `path` during config parsing.
|
||||
|
||||
### How to Use
|
||||
|
||||
Here are some specific examples provided.
|
||||
|
||||
#### When Need To Build A File Sink Through Config
|
||||
|
||||
When logger construction should be described entirely as config data:
|
||||
```moonbit
|
||||
let sink = SinkConfig::new(kind=SinkKind::File, path="app.log")
|
||||
let config = LoggerConfig::new(sink=sink)
|
||||
```
|
||||
|
||||
In this example, the selected enum variant controls which built-in sink builder will be used.
|
||||
|
||||
#### When Need Formatter-driven Console Output
|
||||
|
||||
When the config should request text console formatting instead of the default console sink:
|
||||
```moonbit
|
||||
let sink = SinkConfig::new(kind=SinkKind::TextConsole)
|
||||
```
|
||||
|
||||
In this example, the enum value makes the config intent explicit.
|
||||
|
||||
### Error Case
|
||||
|
||||
e.g.:
|
||||
- Unsupported sink kind text in parsed JSON raises `ConfigError`.
|
||||
|
||||
- `SinkKind::File` without a non-empty `path` is rejected during config parsing.
|
||||
|
||||
### Notes
|
||||
|
||||
1. This enum is for config-driven sink selection, not for direct handwritten sink composition.
|
||||
|
||||
2. Use concrete constructors such as `console_sink()` or `file_sink(...)` when building sinks in code instead of through `SinkConfig`.
|
||||
Reference in New Issue
Block a user