Files
BitLogger/bitlogger/BitLogger_wbtest.mbt
T
2026-05-08 14:18:27 +08:00

55 lines
1.8 KiB
MoonBit

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")
}