1

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

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

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

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

如果 +我们使用实用方法(例如使用Stringbuilder.

log4j.xml用于配置记录器杠杆。

4

2 回答 2

4

正确的解决方案是使用 slf4j/logback,它支持传入原始数据而无需预先生成字符串。使用 Commons Logging 无法做到这一点,如果您替换为,性能也不会提高+StringBuilder因为字符串连接表达式已经编译成涉及StringBuilder.

于 2013-01-15T11:51:11.847 回答
0

我建议您为此创建实用程序调用,您自己的架构在 Logger

像这样的东西(伪代码,我不知道记录器的实现)

class OwnLogger extends Logger {

    public static function info(Object o){
        if(isInfoEnabled()){
            super.info(o);
        }
    }

}
于 2013-01-15T11:53:07.893 回答