我已经了解了一些使用Java记录调试消息的方法,由于我的背景是C语言,我的关注点如下:
这些库声称在禁用日志记录的情况下(例如生产环境)具有最小的开销,但由于它们的log()
函数的参数仍然会被评估,因此我的担忧是,在实际情况下,开销实际上并不可忽略。
例如,log(myobject.toString(), "info message")
仍然具有评估myobject.toString()
的开销,这可能非常大,即使日志函数本身什么也不做。
有人有解决这个问题的办法吗?
PS:对于那些想知道我为什么提到C语言背景的人:C语言允许您使用预处理器宏和编译时指令,在编译时完全删除与调试相关的所有代码,包括宏参数(根本不会出现)。
编辑: 阅读了第一批答案后,似乎Java显然没有任何可以解决这个问题的东西(考虑在每个CPU位都很重要的移动环境中在一个大循环中记录一个数字的余弦值)。所以我会选择基于IDE的解决方案。我最后的选择是构建类似于“查找所有/替换”宏的东西。 我最初认为,也许从一个面向方面的框架中获取的一些东西会有所帮助... 有人吗?