标签:临时 私有库 连接 ssi string 特定 延迟 sde 兴趣
为什么要用SLF4J?
用Log4j时的做法:
if (logger.isDebugEnabled()) { logger.debug("Processing trade with id: " + id + " symbol: " + symbol); }
使用SLF4J,更简洁的格式达到同样的效果,如下:
logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
在SLF4J中,我们不需要进行字符串拼接,不会导致使用临时字符串带来的消耗。
相反,我们使用带占位符的模板消息来记录日志信息,并提供实际值作为参数。
也许你会想,要是有多个参数该怎么办,你可以使用带参数版的日志方法,也可以通过Object数组传入。
在为日志信息产生最终的字符串之前,该方法会检查是否开启了特定的日志级别,这不仅降低了内存占用,而且预先减少了执行字符串拼接所消耗的CPU时间。
下面的SLF4J日志方法的代码,来自于slf4j-log4j12-1.6.1.jar包里的Log4j的适配器类Log4jLoggerAdapter。
public void debug(String format, Object arg1, Object arg2) { if (logger.isDebugEnabled()) { FormattingTuple ft = MessageFormatter.format(format, arg1, arg2); logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable()); } }
选择SLF4J而不是直接选用Log4j, commons logging, logback 或者 java.util.logging。主要有以下原因?
总结:在java中任何新的代码开发,都应使用SLF4J而不是任何的日志API,包括log4J。
标签:临时 私有库 连接 ssi string 特定 延迟 sde 兴趣
原文地址:https://www.cnblogs.com/liyunfeng17/p/10896292.html