🎉 Release BitLogger v0.1.0 core

This commit is contained in:
Nanaloveyuki
2026-05-08 14:18:27 +08:00
parent d8687a8371
commit ff3d32a26a
16 changed files with 558 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
test "default logger can be reconfigured" {
set_default_min_level(Level::Debug)
set_default_target("global")
let logger = default_logger()
inspect(logger.min_level.label(), content="DEBUG")
inspect(logger.target, content="global")
}
test "logger can enable timestamps" {
let logger = Logger::new(console_sink(), min_level=Level::Info, target="time")
.with_timestamp()
inspect(logger.timestamp, content="true")
}
test "callback sink receives record" {
let captured_target : Ref[String] = Ref::new("")
let captured_message : Ref[String] = Ref::new("")
let logger = Logger::new(
callback_sink(fn(rec) {
captured_target.val = rec.target
captured_message.val = rec.message
}),
min_level=Level::Info,
target="callback",
)
logger.info("hello")
inspect(captured_target.val, content="callback")
inspect(captured_message.val, content="hello")
}
test "callback sink sees child target and context logger shape" {
let captured_target : Ref[String] = Ref::new("")
let captured_message : Ref[String] = Ref::new("")
let captured_field_count : Ref[Int] = Ref::new(0)
let captured_timestamp : Ref[UInt64] = Ref::new(0UL)
let logger = Logger::new(
callback_sink(fn(rec) {
captured_target.val = rec.target
captured_message.val = rec.message
captured_field_count.val = rec.fields.length()
captured_timestamp.val = rec.timestamp_ms
}),
min_level=Level::Info,
target="app",
)
.child("worker")
.with_context_fields([field("service", "bitlogger")])
.with_timestamp()
logger.info("ready", fields=[field("mode", "test")])
inspect(captured_target.val, content="app.worker")
inspect(captured_message.val, content="ready")
inspect(captured_field_count.val, content="2")
inspect(captured_timestamp.val > 0UL, content="true")
}