有没有办法在我的应用程序的生产版本中静态禁用 Rust 日志记录?

Ame*_*meo 3 logging rust

我有一个用 Rust 编写的 WebAssembly 模块,它log在开发过程中通过crate执行日志记录以用于调试目的。我注意到,即使我没有配置记录器,对内部log函数的格式设置和调用仍保留在生成的 WebAssembly 模块中。这会浪费字节,因为这些函数的输出永远不会被使用/显示。

有没有办法静态禁用日志记录,而不必删除代码中的日志宏调用?此外,有没有办法只在发布版本中禁用它?

Ame*_*meo 5

是的; 的log板条箱提供特征的标志在允许记录到在编译时向上被静态禁用,以一定的水平。

如果您想完全禁用发布版本中的所有登录,但在调试版本中保持正常登录,请更改您的条目Cargo.toml以包含如下release_max_level_off功能:

log = { version = "0.4", features = ["release_max_level_off"] }
Run Code Online (Sandbox Code Playgroud)

这将导致所有对日志函数的调用从生成的二进制文件中删除,并通过死代码消除来获取任何相关的格式化代码。