Java IsInfo已启用()以用于公共日志记录

Java IsInfo已启用()以用于公共日志记录,java,logging,log4j,apache-commons-logging,Java,Logging,Log4j,Apache Commons Logging,我在应用程序中的很多地方使用logger.info(“语句”+string),包括for循环和if语句 我检查发现,即使未启用“INFO”级别,也会首先创建字符串消息 如何在创建字符串之前检查INFO是否已启用,而无需在每个实现位置添加isinfoabled() 另外,在使用记录器时,减少开销的最佳方法是什么 与其使用+不如使用实用方法,比如使用Stringbuilder返回串联字符串 我正在使用log4j.xml配置记录器控制杆 正确的解决方案是使用slf4j/logback,它支持在不预先生

我在应用程序中的很多地方使用
logger.info(“语句”+string)
,包括for循环if语句

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

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

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

与其使用
+
不如使用实用方法,比如使用
Stringbuilder
返回串联字符串


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

正确的解决方案是使用slf4j/logback,它支持在不预先生成字符串的情况下传入原始数据。使用Commons日志,如果将
+
替换为
StringBuilder
,则无法完成此操作,性能也不会提高,因为字符串连接表达式已经编译成包含
StringBuilder

的代码。正确的解决方案是使用slf4j/logback,它支持在不预先生成字符串的情况下传入原始数据。如果用
StringBuilder
替换
+
,那么使用Commons日志记录就无法做到这一点,而且性能也不会提高,因为字符串连接表达式已经编译成涉及
StringBuilder

的代码,我建议您为此创建实用程序调用,您自己的体系结构优于日志记录程序

类似这样的代码(伪代码,我不知道日志程序的实现)


我建议您为此创建实用程序调用,您自己的体系结构优于Logger

类似这样的代码(伪代码,我不知道日志程序的实现)


我使用的是commons日志,而不是log4j。这能在commons logging上工作吗?@DebajyotiDas这是任何日志实用程序的抽象,允许您将
IsInfo启用
仅放在一个位置。您能解释一下如何创建实用程序方法吗?我使用的是commons logging,而不是log4j。这对commons logging有用吗?@DebajyotiDas这是任何日志实用程序的抽象,允许您将
IsInfo启用的
仅放在一个位置。您能否解释一下如何创建实用程序方法?
class OwnLogger extends Logger {

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

}