Add split sink routing helpers

This commit is contained in:
Nanaloveyuki
2026-05-09 22:00:02 +08:00
parent fa2a165942
commit 2e008b649c
7 changed files with 159 additions and 0 deletions
+20
View File
@@ -24,6 +24,8 @@ BitLogger 是一个基于 MoonBit 的结构化日志库。
- `json_console_sink()` 提供 JSON 控制台输出
- sink composition via `fanout_sink(...)`
- `fanout_sink(...)` 支持多 sink 组合
- sink routing via `split_sink(...)` and `split_by_level(...)`
- `split_sink(...)``split_by_level(...)` 支持按谓词或 level 将日志路由到不同 sink
- custom callback sink via `callback_sink(...)`
- `callback_sink(...)` 支持自定义外部集成
- buffered sink via `buffered_sink(...)`
@@ -142,6 +144,24 @@ test {
}
```
```mbt check
test {
let logger = Logger::new(
split_by_level(
callback_sink(fn(rec) {
println("high priority: \{rec.level.label()} \{rec.message}")
}),
console_sink(),
min_level=Level::Warn,
),
min_level=Level::Trace,
target="split",
)
logger.info("normal output")
logger.warn("warning output")
}
```
```mbt check
test {
let formatter = text_formatter(