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);
}
}
}