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

时间:2019-11-20 21:57:31

标签: logging rust

我有一个用Rust编写的WebAssembly模块,该模块在开发过程中通过log板条箱进行调试记录。我注意到,即使没有配置记录器,内部log内部函数的格式和调用仍保留在生成的WebAssembly模块中。这会浪费字节,因为这些函数的输出将永远不会使用/显示。

有什么方法可以静态禁用日志记录,而不必删除代码中的log宏调用?另外,有没有办法仅在发行版本中禁用此功能?

1 个答案:

答案 0 :(得分:3)

是; log板条箱提供了features flags,可在编译时将日志静态禁用到一定级别。

如果您要完全禁用发行版本中的所有日志记录,但要保留调试版本中的正常日志记录,请在Cargo.toml中更改条目,以包括如下的release_max_level_off功能:

log = { version = "0.4", features = ["release_max_level_off"] }

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