我在应用程序的许多地方都使用了logger.info("statement" + string),包括for循环和if语句。

我检查发现,即使未启用“ INFO”级别,也首先创建了字符串消息。

如何在创建字符串之前检查INFO是否已启用,而又没有在我实现它的每个位置添加isInfoEnabled()的情况。

另外,使用记录器时减少开销的最佳方法是什么。

如果不使用+而不是使用Stringbuilder返回连接字符串的实用方法,那会更好。

我正在使用log4j.xml来配置记录器控制杆。

最佳答案

正确的解决方案是使用slf4j / logback,它支持传入原始数据而无需预先生成字符串。对于Commons Logging,如果将+替换为StringBuilder,则无法完成此操作,并且性能也不会提高,因为字符串连接表达式已被编译为涉及StringBuilder的代码。

10-06 05:02
查看更多