mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-23 16:32:19 +00:00
62 lines
1.5 KiB
MoonBit
62 lines
1.5 KiB
MoonBit
///|
|
|
let benchmark_record : @log.Record = @log.Record::new(
|
|
@log.Level::Info,
|
|
"benchmark record",
|
|
target="bench",
|
|
fields=[@log.field("component", "bitlogger")],
|
|
)
|
|
|
|
///|
|
|
test "bench callback logger emission" (it : @bench.T) {
|
|
let writes : Ref[Int] = Ref(0)
|
|
let logger = @log.Logger::new(@log.callback_sink(fn(_) { writes.val += 1 }))
|
|
it.bench(fn() {
|
|
logger.info("benchmark record", fields=[
|
|
@log.field("component", "bitlogger"),
|
|
])
|
|
it.keep(writes.val)
|
|
})
|
|
}
|
|
|
|
///|
|
|
test "bench trace context field binding" (it : @bench.T) {
|
|
let writes : Ref[Int] = Ref(0)
|
|
let context = @log.trace_context("trace-bench", "span-bench")
|
|
let logger = @log.Logger::new(@log.callback_sink(fn(_) { writes.val += 1 })).with_trace_context(
|
|
context,
|
|
)
|
|
it.bench(fn() {
|
|
logger.info("benchmark record", fields=[@log.field("event", "request")])
|
|
it.keep(writes.val)
|
|
})
|
|
}
|
|
|
|
///|
|
|
test "bench queued logger enqueue and flush" (it : @bench.T) {
|
|
let writes : Ref[Int] = Ref(0)
|
|
let logger = @log.Logger::new(@log.callback_sink(fn(_) { writes.val += 1 })).with_queue(
|
|
max_pending=8,
|
|
)
|
|
it.bench(fn() {
|
|
logger.info("benchmark record")
|
|
it.keep(logger.sink.flush())
|
|
})
|
|
}
|
|
|
|
///|
|
|
test "bench native file sink write" (it : @bench.T) {
|
|
let sink = @log.file_sink(
|
|
"logs/bitlogger-benchmark.log",
|
|
append=false,
|
|
auto_flush=false,
|
|
formatter=fn(rec) { rec.message },
|
|
)
|
|
if sink.is_available() {
|
|
it.bench(fn() {
|
|
sink.write(benchmark_record)
|
|
it.keep(sink.write_failures())
|
|
})
|
|
ignore(sink.close())
|
|
}
|
|
}
|