Add composable logger core utilities

This commit is contained in:
Nanaloveyuki
2026-05-08 16:24:20 +08:00
parent fb8dea8cfb
commit 50013f7f0d
11 changed files with 928 additions and 18 deletions
+31
View File
@@ -36,6 +36,37 @@ pub fn[S] Logger::with_context_fields(self : Logger[S], fields : Array[Field]) -
}
}
pub fn[S] Logger::with_filter(self : Logger[S], predicate : (Record) -> Bool) -> Logger[FilterSink[S]] {
{
min_level: self.min_level,
sink: filter_sink(self.sink, predicate),
target: self.target,
timestamp: self.timestamp,
}
}
pub fn[S] Logger::with_patch(self : Logger[S], patch : RecordPatch) -> Logger[PatchSink[S]] {
{
min_level: self.min_level,
sink: patch_sink(self.sink, patch),
target: self.target,
timestamp: self.timestamp,
}
}
pub fn[S] Logger::with_queue(
self : Logger[S],
max_pending~ : Int = 0,
overflow~ : QueueOverflowPolicy = QueueOverflowPolicy::DropNewest,
) -> Logger[QueuedSink[S]] {
{
min_level: self.min_level,
sink: queued_sink(self.sink, max_pending=max_pending, overflow=overflow),
target: self.target,
timestamp: self.timestamp,
}
}
pub fn[S] Logger::with_min_level(self : Logger[S], min_level : Level) -> Logger[S] {
{ ..self, min_level }
}