看起来是一个相当简单的问题,但我想在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
在这里打印出堆栈跟踪的最佳方法是什么,以便我可以记录和审核它,从而修复可怕代码中的错误?