use std::sync::OnceLock;
use parking_lot::RwLock;
use sz_orm_logger::{LogLevel, Logger, StructuredLogger};
static LOGGER: OnceLock<RwLock<StructuredLogger>> = OnceLock::new();
fn logger() -> &'static RwLock<StructuredLogger> {
LOGGER.get_or_init(|| RwLock::new(StructuredLogger::new()))
}
pub fn log_query(level: LogLevel, msg: &str) {
let logger = logger().read();
logger.log(level, msg);
}
pub fn log_count() -> usize {
let logger = logger().read();
logger.entries().len()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_log_query_writes_entry() {
let before = log_count();
log_query(LogLevel::Info, "test log message");
let after = log_count();
assert!(after > before, "log count should increment");
}
#[test]
fn test_log_multiple_entries() {
log_query(LogLevel::Warn, "warning message");
log_query(LogLevel::Error, "error message");
assert!(log_count() > 0);
}
}