Java日志规约
Rule 1. 【强制】应用中不可直接使用日志库(Log4j、Logback)中的API,而应使用日志框架SLF4J中的API 使用门面模式的日志框架,有利于维护各个类的日志处理方式统一。 import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static Logger logger = LoggerFactory.getLogger(Foo.class); Rule 2. 【推荐】对不确定会否输出的日志,采用占位符或条件判断 //WRONG logger.debug("Processing trade with id: " + id + " symbol: " + symbol); 如果日志级别是info,上述日志不会打印,但是会执行1)字符串拼接操作,2)如果symbol是对象,还会执行toString()方法,浪费了系统资源,最终日志却没有打印。 //RIGHT logger.debug("Processing trade with id: {} symbol : {} ", id, symbol); 但如果symbol.getMessage()本身是个消耗较大的动作,占位符在此时并没有帮助,须要改为条件判断方式来完全避免它的执行。 //WRONG logger.debug("Processing