use tracing::{Level, info};
use tracing_subscriber::FmtSubscriber;
#[tokio::main]
async fn main() {
let subscriber = FmtSubscriber::builder()
.with_max_level(Level::DEBUG) .with_target(true) .with_thread_ids(true) .with_line_number(true) .with_file(true) .with_ansi(true) .pretty() .finish();
tracing::subscriber::set_global_default(subscriber).expect("设置日志订阅者失败");
info!("🚀 启动 WebDAV 日志示例");
demo_log_levels().await;
info!("✅ 示例完成");
}
async fn demo_log_levels() {
use tracing::{debug, error, trace, warn};
info!("=== 日志级别示例 ===");
error!("这是一个 ERROR 级别的日志");
warn!("这是一个 WARN 级别的日志");
info!("这是一个 INFO 级别的日志");
debug!("这是一个 DEBUG 级别的日志");
trace!("这是一个 TRACE 级别的日志");
let file_size = 1024 * 1024;
let elapsed_ms = 156;
info!(
file_size = %file_size,
elapsed_ms = %elapsed_ms,
"文件处理完成"
);
process_file("test.txt", 2048).await;
}
#[tracing::instrument(skip(size), fields(size = %size))]
async fn process_file(filename: &str, size: u64) {
use tracing::info;
info!("开始处理文件");
tokio::time::sleep(tokio::time::Duration::from_millis(100)).await;
info!("文件处理完成");
}