如题
我把tracing的初始化写在一个独立文件,main程序调用,格式什么都没有问题,但是就是不写入文件
请教正确写法
pub fn init_log(log_level: &String, evn: &String) {
LOGINIT.call_once(|| {
let level = match log_level.to_lowercase().as_str() {
"error" => Level::ERROR,
"warn" => Level::WARN,
"info" => Level::INFO,
"debug" => Level::DEBUG,
"trace" => Level::TRACE,
_ => Level::INFO
};
let local_time = OffsetTime::new(
UtcOffset::from_hms(8, 0, 0).unwrap(),
format_description!("[year]-[month]-[day] [hour]:[minute]:[second].[subsecond digits:3]"),
);
match evn.as_str().cmp("dev").is_eq() {
true => {
let file_appender: RollingFileAppender = tracing_appender::rolling::daily("logs", "server.log");
let (non_blocking, _guard) = tracing_appender::non_blocking(file_appender);
tracing_subscriber::fmt()
.with_writer(non_blocking)
.with_max_level(level)
.with_timer(local_time)
.with_thread_names(true)
.with_thread_ids(true)
.init();
},
false => {
tracing_subscriber::fmt()
.with_max_level(Level::DEBUG)
.with_timer(local_time)
.with_thread_names(true)
.init();
}
};
})
}
1
共 5 条评论, 1 页
评论区
写评论感谢大佬关注。
最后我用 rolling-file 这个库替代轮转功能。效果不错。
A rolling file appender with customizable rolling conditions. Includes built-in support for rolling conditions on date/time (daily, hourly, every minute) and/or size.
最后问一下,大佬推荐用哪个日志库?
文档 写了按照 UTC 时间追加
粗略看了下,打个 patch,改一下时间就可以 https://github.com/tokio-rs/tracing/blob/tracing-appender-0.2.2/tracing-appender/src/rolling.rs#L146
let now = OffsetDateTime::now_utc().replace_offset(time::UtcOffset::from_hms(8, 0, 0).unwrap());
时区问题有两年没解决了:https://github.com/tokio-rs/tracing/issues/1645
最新分支没发版,但改成了 Builder 模式,其实可以提交一个 PR,在 Builder 中配置这个时间。https://github.com/tokio-rs/tracing/blob/master/tracing-appender/src/rolling.rs#L195
--
👇
colatea: 这个库有坑,设置了+8时区后,日志打印里时间对了,但是轮转的时间居然还是按照utc0时间轮转。
这个库有坑,设置了+8时区后,日志打印里时间对了,但是轮转的时间居然还是按照utc0时间轮转。
大佬,有其他配合tracing轮转兼限制文件数量的库推荐不?感谢
感谢大佬
--
👇
苦瓜小仔: WorkerGuard 需要一直保留到日志记录结束:
demo (顺便精简了一下代码)
WorkerGuard 需要一直保留到日志记录结束:
demo (顺便精简了一下代码)