当我在代码中有一条日志消息时(比如 logger.debug("Some message {}", someFunction());
)在日志级别高于调试的情况下,我'我们现在构建了一个字符串并无缘无故地调用了 someFunction()
。我习惯了 C++,我会使用一些宏在实际调用 logger.debug(...)
之前检查日志级别,但似乎没有等效的解决方案 java 。我正在寻找防止用以下内容填充我的代码的想法:
if (logger.isDebugEnabled()) {
logger.debug("Some message {}", someFunction());
}
对于每条日志消息。 欢迎提出任何建议。
最佳答案
从 Log4j 2.4 开始,您可以使用 logger.debug("Some message {}", () -> someFunction());
。这将被延迟评估,并且仅当日志级别设置为 DEBUG
或更低时才会调用方法 someFuction()
- 参见 this link .
关于java - 如果禁用日志级别,如何防止日志消息中的字符串生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55477417/