X Tutup
Skip to content

Latest commit

 

History

History
37 lines (26 loc) · 1.08 KB

File metadata and controls

37 lines (26 loc) · 1.08 KB

02.DoNotConcatStringInLog

不要在日志中拼接字符串,例如:

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。

X Tutup