您可以为 Actix-web 和应用程序的其余部分使用相同的记录器。关键是通过包含可选参数来区分对宏的调用(跟踪!、调试!、信息!、警告!和错误!)target
。然后你必须设置 RUST_LOG 环境变量。
示例调用:
RUST_LOG="info,parser::expression=trace,actix_web=info" cargo run
- 以他们的
actix_web
代码为目标并打印信息和更高级别的消息。
- 目标是我的代码的
parser::expression
一部分并启用跟踪级别的消息。
在我的代码中,这是一个示例跟踪消息:
trace!(target: "parser::expression", "Tracing: {}", self.expression_source);
如果您省略target
参数,您的模块路径将成为默认目标,或者文档说,但是我用于模块路径的每个拼写,包括越来越少的部分,包括类名等,都失败了,所以我这样做不了解文档。手动指定它确实有效,这就是我所做的。
在 Cargo.toml 文件中正确设置 crate 导入也很重要:
[dependencies]
log = { version = "0.4", features = ["max_level_trace", "release_max_level_warn", "std", "serde"] }
以上允许在开发版本上跟踪消息,但仅在发布版本上发出警告。编译器会在编译时丢弃代码,因此在运行时更改环境变量不会对这种更改产生影响。
以下是一些有用的文档:
https://rust-lang-nursery.github.io/rust-cookbook/development_tools/debugging/config_log.html