我想使用String设置跟踪级别(因为我从env变量中获取级别)。
let env_log_level = std::env::var("LOG_LEVEL").unwrap();
tracing_subscriber::fmt()
.with_max_level(tracing::Level::DEBUG) // somehow use env_log_level here
.with_target(false)
.init();
我想这应该是一种将String解析为Level对象的方法,但我不知道如何实现。
1条答案
按热度按时间uttx8gqw1#
Level
实现了FromStr
,它接受“error”、“warn”、“info”、“debug”或“trace”(不区分大小写)。你可以这样使用它:注意:我使用了
::from_str()
而不是.parse()
,因为.with_max_level()
是泛型的,需要类型注解。正如@Finomnis所建议的,一个功能更丰富的解决方案是利用
EnvFilter
,因为它允许配置全局日志级别等(参见文档)。