2

我在 rust 中开发了一些东西,并记录了一些错误或警告。我正在使用 systemd_journal_logger lib 来完成这项工作。在我编译并尝试使用 relase 二进制文件之前,它工作正常。由于其中不存在调试符号,因此它根本无法记录。在这种情况下有没有办法让日志工作?

我发现 shared_memory 库导致它

我有一个简单的例子

use log::LevelFilter;

fn main() {
  systemd_journal_logger::init().unwrap();

  log::set_max_level( LevelFilter::Debug);

  log::warn!("A warning.");
  log::error!("An error");
}    

在我的Cargo.toml我有

[dependencies]
serde =  { version = "1.0", features = ["derive"] }
serde_json = "1.0"
log = "=0.4.14"
systemd-journal-logger = "=0.3.1"

运行它

cargo run

./target/debug/mytest

甚至

./target/release/mytest

完美地看着杂志

 journalctl -f

但如果我包括

 shared_memory = "0.12.2"

作为依赖

cargo build --release
./target/release/mytest

停止工作

4

1 回答 1

1

哦,这很卑鄙。shared_memory

[features]
default = ["log/release_max_level_off"]

这已经修复但未发布,您可以通过将shared_memory版本降级到 来避免此问题<0.12.2,或者在不破坏 构建的情况下仔细禁用默认功能shared_memory...</p>

shared_memory = { version = "0.12.2", default_features = false, features = ["log"] }
于 2022-02-04T05:00:37.870 回答