似乎是一个相当直截了当的问题,但是当我在 Scalatra 中的顶级错误处理程序被触发时,我想记录一个堆栈跟踪。我通过做一些微不足道的事情故意在我的一种方法中抛出异常:
throw new IllegalArgumentException
在错误处理程序中,代码如下所示:
error {
case e => {
val logger = LoggerFactory.getLogger(getClass)
logger.info("an exception occurred: " + e.getStackTrace())
logger.info("the request body is: " + request)
NotFound("An error occurred, please contact support")
}
}
错误处理程序本身是 Scalatra 特定的,但我很确定我正在寻找的答案可以使用任何香草 Scala 技术来解决。此时我可以做些什么来获取堆栈跟踪吗?我不确定请求是否与错误处理程序在同一个线程上,否则那里可能会有一些答案。e.getStackTrace()
给我[Ljava.lang.StackTraceElement;@1f6b6954
在此处打印堆栈跟踪以便我可以记录并查看它以修复我糟糕代码中的错误的最佳方法是什么?