首页 > 解决方案 > 有没有办法在我的应用程序的生产版本中静态禁用 Rust 日志记录?

问题描述

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

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

标签: loggingrust

解决方案


是的; logcrate 提供了一些特性标志,允许在编译时静态禁用日志记录到某个级别。

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

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

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


推荐阅读