use inklog::LoggerManager;
use log::{debug, error, info, warn};
use std::time::Duration;
use inklog::tracing::{error as tracing_error, info as tracing_info};
#[tokio::test]
async fn test_log_crate_native_support() {
let _logger = LoggerManager::builder()
.level("debug")
.build()
.await;
info!("This is a log::info message");
warn!("This is a log::warn message");
error!("This is a log::error message");
debug!("This is a log::debug message");
std::thread::sleep(Duration::from_millis(200));
assert!(true);
}
#[tokio::test]
async fn test_tracing_and_log_coexist() {
let _logger = LoggerManager::builder()
.level("debug")
.build()
.await;
info!("log::info message");
tracing_info!("tracing::info message");
error!("log::error message");
tracing_error!("tracing::error message");
std::thread::sleep(Duration::from_millis(200));
assert!(true);
}
#[tokio::test]
async fn test_log_level_filtering() {
let _logger = LoggerManager::builder()
.level("warn")
.build()
.await;
debug!("This debug message should not appear");
info!("This info message should not appear");
warn!("This warn message should appear");
error!("This error message should appear");
std::thread::sleep(Duration::from_millis(100));
assert!(true);
}
#[tokio::test]
async fn test_log_target() {
let _logger = LoggerManager::new().await;
info!(target: "my_module", "Structured log message from log crate");
warn!(target: "auth", "User authentication attempt");
std::thread::sleep(Duration::from_millis(100));
assert!(true);
}
#[tokio::test]
async fn test_log_all_levels() {
let _logger = LoggerManager::builder()
.level("trace")
.build()
.await;
log::trace!("Trace message from log crate");
log::debug!("Debug message from log crate");
log::info!("Info message from log crate");
log::warn!("Warn message from log crate");
log::error!("Error message from log crate");
std::thread::sleep(Duration::from_millis(100));
assert!(true);
}
#[tokio::test]
async fn test_log_formatting() {
let _logger = LoggerManager::new().await;
info!("Simple message");
info!("Message with {}", "formatting");
info!("Message with {:?} debug", "structure");
info!("Message with numbers: {}, {}", 42, 3.14);
std::thread::sleep(Duration::from_millis(100));
assert!(true);
}
#[tokio::test]
async fn test_log_to_file() {
let temp_dir = tempfile::tempdir().unwrap();
let log_file = temp_dir.path().join("test.log");
let _logger = LoggerManager::builder()
.level("info")
.file(&log_file)
.build()
.await;
info!("This should go to file");
warn!("This warning should also be in file");
std::thread::sleep(Duration::from_millis(200));
assert!(log_file.exists());
let contents = std::fs::read_to_string(&log_file).unwrap();
assert!(contents.contains("This should go to file") || contents.len() > 0);
}