在 Google App Engine 上的已部署应用程序中从数据存储区分离对象时,我收到“无法分离”异常,我无法在我的开发盒上重现该异常。分离操作是服务器端的,所以我掌握的唯一信息是应用程序日志文件中的异常日志。但是,堆栈跟踪被省略了:例如,最深的内部异常以“... 36 more”结尾。
如何调整应用程序日志记录的详细程度以包含完整的、非省略的堆栈跟踪?
在 Google App Engine 上的已部署应用程序中从数据存储区分离对象时,我收到“无法分离”异常,我无法在我的开发盒上重现该异常。分离操作是服务器端的,所以我掌握的唯一信息是应用程序日志文件中的异常日志。但是,堆栈跟踪被省略了:例如,最深的内部异常以“... 36 more”结尾。
如何调整应用程序日志记录的详细程度以包含完整的、非省略的堆栈跟踪?
您可以做的是在记录异常时添加 Throwable 作为参数。IE:
Logger log = Logger.getLogger(YourClass.class.getName());
.....
}catch (final Throwable e){
log.log(Level.SEVERE, e.toString(), e);
}
这将在 GAE 的日志上打印一个很好的堆栈跟踪。
这样您就不必更改全局日志级别。
您可以调整的东西很少:
1) 在war\WEB-INF\logging.properties
文件中。将 .level 值更改为更低的级别,例如 DEBUG。
2)在您的Java代码中,查看将问题代码封装在 atry/catch
中,以便您可以控制它。
3) 在catch
块中,查看通过 记录异常数据ex.printStackTrace()
,其中 ex 是异常对象。