我使用时雄作为stdout的标准,并使用env_logger作为stdout的标准。
所以在stdout中清除事件发生的时间:[2023-11-29T02:30:03Z INFO myapp] connected success
但是在stderr中只出现了panic:Error: Io(Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })
如何使错误日志更有信息性?(例如时间戳)
比如我的代码
use env_logger::{Builder, Target};
use tokio::net::TcpStream;
#[tokio::main]
async fn main() {
let mut builder = Builder::from_default_env();
builder.target(Target::Stdout);
builder.init();
warn!("my test connected");
TcpStream::connect("127.0.0.1:3030").await.unwrap();
}
字符串
1条答案
按热度按时间ifmq2ha21#
以下是实现此目标的分步指南:
1.确保Cargo.toml中的依赖项:首先,确保
Cargo.toml
文件中有env_logger
作为依赖项。字符串
1.配置env_logger:在主函数中或者在启动javascript代码之前,配置
env_logger
。您可以使用Builder
自定义格式,包括时间戳。型
在这个例子中,我使用
chrono
作为时间戳。如果你选择使用chrono
,请确保将其添加到依赖项中:型
1.日志错误:在记录错误时,请确保使用
log
提供的记录宏,这是env_logger
的依赖项。这可以确保env_logger
捕获日志并相应地格式化。型
1.运行您的应用:在运行应用时,您可以通过环境变量来控制日志级别和目标,例如:
型
这将确保捕获所有错误日志并显示时间戳。
要使用时雄和env_logger在Rust代码中的panic消息中添加时间戳,您可以使用自定义panic hook沿着chrono来生成时间戳,就像我在下面的代码中突出显示的那样。
型
看这里:https://docs.rs/chrono/latest/chrono/struct.DateTime.html为日期时间在计时