1,起因:我的一个接口报错,但是一直找不到详细的报错日志信息。
找到的日志如下:
可以看到:只是说程序发生异常,但没有详细的报错信息:指出是哪一条代码报错了
解决:问同事,说:是因为我的接口并没有try catch,没有写e.printStackTrace(); 代码,所以详细的错误日志打印不出来。
所以,以下是同事教的几种处理错误日志的方式:
第一种:在controller层加上try catch(有的变量外面要调用,就声明在try外面)
这就是将try catch 放在最外层controller,然后放在一个专门的参数里面,浏览器打开的时候,如果有问题,这个参数就都出来了。根本不需要去翻日志
controller参数怎么返回的?: 就定义一个错误信息字段啊,然后返回,一样的
注意:
加一个error,把e放到里面
第二种方式:
/**
* 获取异常堆栈信息
*
* @param t
* @return
*/
private String printStackTrace(Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
try {
t.printStackTrace(pw);
return sw.toString();
} finally {
try {
pw.close();
sw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
就是通过这个方法,把e变成日志信息,然后定义一个返回字段,这样有问题,返回信息里面就可以看到,根本不需要放在日志里面,既占空间,有占世界。。
参数都是全局变量,直接返回页面,
随便定义,也可以命名errMsg 放在返回参数里面,
这样既省空间,又省时间。。有问题直接看参数返回就知道了。。
根本不需要去日志找。。。