mod common;
use winston::{format, log, transports, LogQuery, Logger};
#[test]
fn test_logging_and_querying() {
let temp_path = common::generate_random_filename();
let logger = Logger::builder()
.add_transport(
transports::File::builder()
.filename(temp_path.clone())
.build(),
)
.format(format::combine(vec![format::timestamp(), format::json()]))
.build();
log!(logger, info, "Test message 1");
log!(logger, error, "Test error message");
log!(logger, warn, "Test warning");
let _ = logger.flush();
let query = LogQuery::new()
.levels(vec!["error"]);
let results = logger.query(&query);
assert!(results.is_ok());
let logs = results.unwrap();
assert!(!logs.is_empty(), "No logs were found. Logs: {:?}", logs);
for (index, log) in logs.iter().enumerate() {
println!("{:?}", log);
assert_eq!(
log.level, "error",
"Expected error level at index {}",
index
);
assert_eq!(
log.message, "Test error message",
"Expected test error message at index {}",
index
);
}
common::delete_file_if_exists(&temp_path)
}