不要在日志中拼接字符串,例如:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Foo {
private static final Logger logger = LoggerFactory.getLogger(Foo.class);
public void method(int num) {
logger.debug("num is " + num);
}
}日志都是有输出级别的,例如在info级别下,debug日志不会被打印,但是以上代码却执行了字符串拼接操作,导致了不必要的资源浪费。
可以使用占位符的方式代替字符拼接,在Log4j底层实现中,如果日志不被打印,则会忽略所有的参数输入,避免了不必要的资源浪费。
应该改成使用占位符代替字符串拼接:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Foo {
private static final Logger logger = LoggerFactory.getLogger(Foo.class);
public void method(int num) {
logger.debug("num is {}", num);
}
}最后,占位符的日志API是sl4j的接口,log4j并没有占位符的API,所以,我们应该针对sl4j接口编程,而不是log4j。