应用中使用日志框架 SLF4J 中的 API,不直接使用日志系统(Log4j、Logback)中的 API ,有利于维护和各个类的日志处理方式统一。示例 如下:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Wombat {
final static Logger logger = LoggerFactory.getLogger(Wombat.class);
Integer t;
Integer oldT;
public void setTemperature(Integer temperature) {
oldT = t;
t = temperature;
logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
if(temperature.intValue() > 50) {
logger.info("Temperature has risen above 50 degrees.");
}
}
}
输出日志信息不要进行字符串拼接,应该使用占位符,因为java8中 String 字符串的拼接会使用 StringBuilder 的 append()方法,有一定的性能损耗。使用占位符 仅是替换动作,可以有效提升性能。如下:
logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
异常信息应该包括:案发现场信息和异常堆栈信息,切勿忘记打印异常堆栈信息。 如下:
logger.error("提示信息+各类参数或者对象+" + e.getMessage(), e);