前言:说来惭愧,做了5,6的java开发,今天才发现之前的打印方式是错误的,生产环境出了问题,但是没法定位,后来发现输出方式有问题,为此记录一下;

已下面方法作为测试

import org.slf4j.Logger;
import org.slf4j.LoggerFactory

private Logger logger = LoggerFactory.getLogger(AccountController.class);

@RequestMapping(value="/testException")
public void testException() {
	try {
		int result = 1 / 0;
	} catch (Exception e) {
	    e.printStackTrace();  // 0000
		logger.error("--------testException.errorInfo>:", e);// 1111
		logger.error("--------testException.errorInfo>:{}", e.getMessage());  // 2222
		logger.error("--------testException.errorInfo>:"+ e);  // 3333
	}
}

0000: 在控制台打印堆栈异常信息,一般在开发调试的时候使用
1111:打印详细的错误信息,可打印某个类,某个方法,某行以及错误消息
2222:只打印错误信息,不定位到某一行
3333:错误的写法,不会打印,用逗号“,”分割


**正确的是 logger.error("--------testException.errorInfo>:", e);// 1111**