记录 Rust 程序的日志

16

如果我们有以下代码:

fn main() {
    error!("This is an error log")
    warn!("This is a warn log")
    info!("this is an info log")
    debug!("This is a debug log")
}

在Windows上如何启用调试级别的输出?

3个回答

12

在执行程序时,您需要适当设置RUST_LOG环境变量;就此而言,它是一个以逗号分隔的关键字=值列表;关键字是板条箱或模块名称,例如extrastd::option;值是映射到日志级别的数字:

  • 1:错误
  • 2:警告
  • 3:信息
  • 4:调试

(每个级别都包括更重要的级别。)

在命令提示符中,编译和运行myprog并显示警告和错误需要这样做:

rustc myprog.rs
set RUST_LOG=myprog=4
myprog.exe

6
“debug”需要使用“--cfg debug”编译程序,否则它们会被完全删除。 - huon
2
我尝试根据dbaupps的建议编辑您的问题,但似乎被拒绝了。您能否将上面的代码片段更改为RUST_LOG=myprog=4\n rustc myprog.rs --cfg debug\n myprog.exe - Daniel Fath
2
最近,--cfg=debug 不再需要手动设置,因为此选项已经被默认打开了。如果你不需要调试模式,则需要使用 --cfg=nodebug 选项。 - Steve Klabnik
1
@SteveKlabnik 实际上,应该是 --cfg ndebug - Chris Morgan

4
如果您查看< a href="https://docs.rs/env_logger/0.9.0/env_logger/index.html" rel="nofollow noreferrer"> env_logger 文档,它会说:

"默认情况下除了错误级别之外,所有日志记录都被禁用。"

您需要设置一个环境变量,在您的情况下:RUST_LOG=debug
extern crate env_logger;
extern crate log;
use log::{debug, error, info, warn};


fn main() {
    env_logger::init();

    error!("[!]  error");
    warn!("[!]   warn");
    info!("[!]   info");
    debug!("[!]  debug");
}

/*
[2021-08-19T13:14:15Z ERROR cliapp] [!]  error
[2021-08-19T13:14:15Z WARN  cliapp] [!]   warn
[2021-08-19T13:14:15Z INFO  cliapp] [!]   info
[2021-08-19T13:14:15Z DEBUG cliapp] [!]  debug
*/

CLion小贴士 ->

在这里输入图片描述


3

您可以通过将其设置为环境变量来在程序中设置日志级别。您需要编写的语句是:

RUST_LOG=YOUR-PROJECT-NAME=log_level

例如:RUST_LOG=Hello-World=infoRUST_LOG=Hello-World=3

设置日志级别后,下一步是使用env_logger::init()进行初始化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接