下面的最小示例
#[macro_use]
extern crate log;
extern crate env_logger;
fn main() {
std::env::set_var("MY_LOG_LEVEL", "info");
env_logger::init_from_env("MY_LOG_LEVEL");
info!("hi");
}
INFO 2018-02-18T09:59:20Z: playground: hi
我想使用不同的格式("%Y-%m-%d %H:%M:%S%.3f"
):
INFO 2018-02-18 09:59:20.123: playground: hi
我怎样才能做到这一点?
3条答案
按热度按时间jgwigjjp1#
目前尚不可能¹。
虽然可以使用
Formatter
来更改日志消息的格式,但此格式化程序将日志消息的时间戳作为Timestamp
提供。Timestamp
仅实现Debug
和Display
,没有额外的方法。文档没有提到如何配置日期的显示方式。它只提到类表示“RFC3339的时间戳””。此RFC定义显示日期的方式。您需要的格式与RFC不兼容(最重要的是,它缺少时区,请,* 请勿记录没有时区的日期时间 *,请)。RFC确实允许比板条箱当前使用的更精确。这个特性在最近一个名为"Make the timestamp format more compact"的拉取请求中被删除。在我看来,更精确有时是有用的,你可以打开一个问题,要求
Timestamp
允许该选项。RFC也不允许省略日期和时间之间的T
。查看这两个trait(
Debug
和Display
)的实现可以看出,其表示确实是固定的。1:嗯,你可以忽略
env_logger
的日期,如果你真的想的话,你可以自己找一个。我不知道那会有多糟糕。gab6jxml2#
现在可以使用
env_logger = "0.10"
实现这一点。参见TimestampPrecision和格式时间戳。
jecbmhm33#
这在Rust 1.45.2中是可能的:
更多信息:在日志消息中包含时间戳