Rust simplelog::CombinedLogger在运行时陷入恐慌
我用的是原木和simplelog板条箱。在此之前,此代码有效:Rust simplelog::CombinedLogger在运行时陷入恐慌,rust,Rust,我用的是原木和simplelog板条箱。在此之前,此代码有效: use simplelog::*; CombinedLogger::init( vec![ TermLogger::new(LevelFilter::Warn, Config::default()).unwrap(), WriteLogger::new(LevelFilter::Info, Config::default(), File::create("main.log"
use simplelog::*;
CombinedLogger::init(
vec![
TermLogger::new(LevelFilter::Warn, Config::default()).unwrap(),
WriteLogger::new(LevelFilter::Info, Config::default(), File::create("main.log").unwrap()),
]
).unwrap();
但现在它在运行时抛出此错误:
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', /checkout/src/libcore/option.rs:335:21
stack backtrace:
Cargo.toml依赖项:
log = "0.4.1"
simplelog = "0.5.0"
的文档不是很好,因为它没有解释它返回选项的原因
我读到:函数可能因为或而失败。阅读文档时,您的代码失败,因为无法打开终端。错误消息很简单:您从函数中获得了一个选项::None
。通过读取回溯找到原因。可以生成不可压缩值的三个位置是CombinedLogger::init
,TermLogger::new
,和File::create
。在这三个选项中,唯一返回选项的是TermLogger::new
;其余的返回Result
s。您的TermLogger::new
参数有问题,我假设。OP,请在您的问题中添加回溯!就像@Boiethios说的那样。在这种情况下,我们很容易发现错误是从哪里来的,在将来,回溯会使错误更清楚,是来自发布的代码还是不太明显的东西。它是否也会因为term::stderr()
而失败?@BHustus当然,我会添加它。我相信这个问题值得一提。