mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-05-30 15:42:25 +00:00
📝 Document 0.2 examples and usage patterns
This commit is contained in:
@@ -33,4 +33,71 @@ fn main {
|
||||
target="hook",
|
||||
)
|
||||
callback_logger.info("callback sink ready")
|
||||
|
||||
let pretty_logger = @lib.Logger::new(
|
||||
@lib.text_console_sink(@lib.text_formatter(show_timestamp=false, separator=" | ")),
|
||||
min_level=@lib.Level::Info,
|
||||
target="pretty",
|
||||
)
|
||||
pretty_logger.info("custom text format", fields=[@lib.field("mode", "pretty")])
|
||||
|
||||
if @lib.native_files_supported() {
|
||||
let file_logger = @lib.Logger::new(
|
||||
@lib.file_sink("bitlogger-example.log"),
|
||||
min_level=@lib.Level::Info,
|
||||
target="file",
|
||||
)
|
||||
file_logger.info("native file sink ready", fields=[@lib.field("kind", "file")])
|
||||
ignore(file_logger.sink.flush())
|
||||
ignore(file_logger.sink.close())
|
||||
}
|
||||
|
||||
let buffered = @lib.buffered_sink(@lib.console_sink(), flush_limit=2)
|
||||
let buffered_logger = @lib.Logger::new(buffered, min_level=@lib.Level::Info, target="buffered")
|
||||
buffered_logger.info("buffered one")
|
||||
buffered_logger.info("buffered two")
|
||||
buffered.flush()
|
||||
|
||||
let filtered = @lib.filter_sink(
|
||||
@lib.console_sink(),
|
||||
fn(rec) {
|
||||
rec.target == "kept"
|
||||
},
|
||||
)
|
||||
let kept_logger = @lib.Logger::new(filtered, min_level=@lib.Level::Info, target="kept")
|
||||
let dropped_logger = @lib.Logger::new(filtered, min_level=@lib.Level::Info, target="dropped")
|
||||
kept_logger.info("filter kept this")
|
||||
dropped_logger.info("filter dropped this")
|
||||
|
||||
let filtered_logger = @lib.Logger::new(
|
||||
@lib.console_sink(),
|
||||
min_level=@lib.Level::Info,
|
||||
target="service",
|
||||
).with_filter(@lib.all_of([
|
||||
@lib.target_has_prefix("service"),
|
||||
@lib.message_contains("kept"),
|
||||
]))
|
||||
filtered_logger.info("logger filter dropped this")
|
||||
filtered_logger.child("api").info("logger filter kept this")
|
||||
|
||||
let patched_logger = @lib.Logger::new(
|
||||
@lib.console_sink(),
|
||||
min_level=@lib.Level::Info,
|
||||
target="auth",
|
||||
).with_patch(@lib.compose_patches([
|
||||
@lib.prefix_message("[safe] "),
|
||||
@lib.redact_fields(["token"]),
|
||||
@lib.append_fields([@lib.field("service", "bitlogger")]),
|
||||
]))
|
||||
patched_logger.info("login", fields=[@lib.field("user", "alice"), @lib.field("token", "secret")])
|
||||
|
||||
let queued_logger = @lib.Logger::new(
|
||||
@lib.console_sink(),
|
||||
min_level=@lib.Level::Info,
|
||||
target="queue",
|
||||
).with_queue(max_pending=2, overflow=@lib.QueueOverflowPolicy::DropOldest)
|
||||
queued_logger.info("queued one")
|
||||
queued_logger.info("queued two")
|
||||
queued_logger.info("queued three")
|
||||
ignore(queued_logger.sink.flush())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user