【发布时间】:2026-01-08 08:55:01
【问题描述】:
我已经阅读了一些关于使用 Java 记录调试消息的各种方法,并且来自 C 背景,我的担忧如下:
在禁用日志记录的情况下(例如生产环境),这些库声称开销最小,但由于仍在评估其 log() 函数的参数,我担心的是实际场景中的开销实际上会,一点都不能忽略。
例如,log(myobject.toString(), "info message") 仍然有评估 myobject.toString() 的开销,这可能相当大,即使日志函数本身什么也不做。
有人有解决这个问题的办法吗?
PS:对于那些想知道我为什么提到 C 背景的人:C 允许您使用预处理器宏和编译时指令,这些指令将在编译时完全删除与调试相关的所有代码,包括宏参数(根本不会出现在全部)。
编辑: 在阅读了第一批答案之后,似乎 java 显然没有任何可以解决问题的方法(想想在 CPU 的每一点都很重要的移动环境中将数字的余弦记录在一个大循环中)。所以我要补充一点,我什至会选择基于 IDE 的解决方案。我最后的手段是构建类似“查找全部/替换”宏的东西。 我首先认为也许从面向方面的框架中获取的东西会有所帮助...... 任何人 ?
【问题讨论】:
标签: java logging conditional-compilation overhead