yao_dev_common/log/
mod.rs1use std::env;
2use time::macros::{format_description, offset};
3use tracing_appender::rolling::{RollingFileAppender, Rotation};
4use tracing_subscriber::filter::LevelFilter;
5use tracing_subscriber::fmt::time::OffsetTime;
6use tracing_subscriber::layer::SubscriberExt;
7use tracing_subscriber::{fmt, EnvFilter};
8
9pub fn trace_log_init() {
18 let app_name = env::var("CARGO_PKG_NAME").unwrap_or_else(|_| "default_rust".to_string());
19 let app_name_log = app_name.clone() + ".log";
20 let file_appender = RollingFileAppender::new(
22 Rotation::DAILY, "/var/log/rust", app_name_log, );
26 let time_fmt =
28 format_description!("[year]-[month]-[day] [hour]:[minute]:[second].[subsecond digits:3]");
29 let timer = OffsetTime::new(offset!(+8), time_fmt);
31 let file_layer = fmt::Layer::new()
33 .with_writer(file_appender)
34 .with_timer(timer.clone())
35 .with_ansi(false);
36 let stdout_layer = fmt::Layer::new()
37 .with_writer(std::io::stdout)
38 .with_timer(timer.clone());
39 let subscriber = tracing_subscriber::registry()
40 .with(EnvFilter::from_default_env().add_directive(LevelFilter::INFO.into()))
41 .with(file_layer)
42 .with(stdout_layer);
43 tracing::subscriber::set_global_default(subscriber).expect("Failed to set subscriber");
45}