mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-31 07:24:31 +00:00
🔊 Update 1.0.0
This commit is contained in:
+47
-12
@@ -1,3 +1,4 @@
|
||||
///|
|
||||
pub struct Logger[S] {
|
||||
min_level : Level
|
||||
sink : S
|
||||
@@ -5,14 +6,21 @@ pub struct Logger[S] {
|
||||
timestamp : Bool
|
||||
}
|
||||
|
||||
pub fn[S] Logger::new(sink : S, min_level~ : Level = Level::Info, target~ : String = "") -> Logger[S] {
|
||||
///|
|
||||
pub fn[S] Logger::new(
|
||||
sink : S,
|
||||
min_level? : Level = Level::Info,
|
||||
target? : String = "",
|
||||
) -> Logger[S] {
|
||||
{ min_level, sink, target, timestamp: false }
|
||||
}
|
||||
|
||||
///|
|
||||
pub fn[S] Logger::with_target(self : Logger[S], target : String) -> Logger[S] {
|
||||
{ ..self, target }
|
||||
{ ..self, target, }
|
||||
}
|
||||
|
||||
///|
|
||||
fn combine_targets(parent : String, child : String) -> String {
|
||||
if parent == "" {
|
||||
child
|
||||
@@ -23,11 +31,16 @@ fn combine_targets(parent : String, child : String) -> String {
|
||||
}
|
||||
}
|
||||
|
||||
///|
|
||||
pub fn[S] Logger::child(self : Logger[S], target : String) -> Logger[S] {
|
||||
{ ..self, target: combine_targets(self.target, target) }
|
||||
}
|
||||
|
||||
pub fn[S] Logger::with_context_fields(self : Logger[S], fields : Array[Field]) -> Logger[ContextSink[S]] {
|
||||
///|
|
||||
pub fn[S] Logger::with_context_fields(
|
||||
self : Logger[S],
|
||||
fields : Array[Field],
|
||||
) -> Logger[ContextSink[S]] {
|
||||
{
|
||||
min_level: self.min_level,
|
||||
sink: ContextSink::{ sink: self.sink, context_fields: fields },
|
||||
@@ -36,11 +49,19 @@ pub fn[S] Logger::with_context_fields(self : Logger[S], fields : Array[Field]) -
|
||||
}
|
||||
}
|
||||
|
||||
pub fn[S] Logger::bind(self : Logger[S], fields : Array[Field]) -> Logger[ContextSink[S]] {
|
||||
///|
|
||||
pub fn[S] Logger::bind(
|
||||
self : Logger[S],
|
||||
fields : Array[Field],
|
||||
) -> Logger[ContextSink[S]] {
|
||||
self.with_context_fields(fields)
|
||||
}
|
||||
|
||||
pub fn[S] Logger::with_filter(self : Logger[S], predicate : (Record) -> Bool) -> Logger[FilterSink[S]] {
|
||||
///|
|
||||
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),
|
||||
@@ -49,7 +70,11 @@ pub fn[S] Logger::with_filter(self : Logger[S], predicate : (Record) -> Bool) ->
|
||||
}
|
||||
}
|
||||
|
||||
pub fn[S] Logger::with_patch(self : Logger[S], patch : RecordPatch) -> Logger[PatchSink[S]] {
|
||||
///|
|
||||
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),
|
||||
@@ -58,27 +83,37 @@ pub fn[S] Logger::with_patch(self : Logger[S], patch : RecordPatch) -> Logger[Pa
|
||||
}
|
||||
}
|
||||
|
||||
///|
|
||||
pub fn[S] Logger::with_queue(
|
||||
self : Logger[S],
|
||||
max_pending~ : Int = 0,
|
||||
overflow~ : QueueOverflowPolicy = QueueOverflowPolicy::DropNewest,
|
||||
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),
|
||||
sink: queued_sink(self.sink, max_pending~, 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 }
|
||||
///|
|
||||
pub fn[S] Logger::with_min_level(
|
||||
self : Logger[S],
|
||||
min_level : Level,
|
||||
) -> Logger[S] {
|
||||
{ ..self, min_level, }
|
||||
}
|
||||
|
||||
pub fn[S] Logger::with_timestamp(self : Logger[S], enabled~ : Bool = true) -> Logger[S] {
|
||||
///|
|
||||
pub fn[S] Logger::with_timestamp(
|
||||
self : Logger[S],
|
||||
enabled? : Bool = true,
|
||||
) -> Logger[S] {
|
||||
{ ..self, timestamp: enabled }
|
||||
}
|
||||
|
||||
///|
|
||||
pub fn[S] Logger::is_enabled(self : Logger[S], level : Level) -> Bool {
|
||||
level.enabled(self.min_level)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user