playframework - 记录任何抛出的 Throwable
问题描述
我正在使用播放框架的 2.5.19 版本。
假设我有一个播放框架控制器,如下所示:
public class ExceptionTest extends Controller{
public Result classLoadFail() {
LogManager.getLogger().info("Starting class load fail test");
throw new NoSuchMethodError();
}
public Result generalFail() {
LogManager.getLogger().info("Runtime Exception");
throw new RuntimeException();
}
}
所以这一切都是写入日志并抛出一个 Throwable,每个方法都不同。我有一个 ErrorHandler 具有以下内容:
@Override
public CompletionStage<Result> onServerError(Http.RequestHeader request, java.lang.Throwable exception) {
LogManager.getLogger().error("Throwable", exception);
return super.onServerError(request, exception);
}
如果我调用激活 generalFail 的路由,我会在我的日志中从 onServerError 得到错误级别的内容,这正是我所期望的。如果我调用激活 classLoadFail 的路由,我什么也得不到。事实上,在浏览器中,我什至根本没有得到响应代码。
如果出现错误,我该如何获取它,至少它会显示在日志中?理想情况下,我还想知道如何让它将 500 发送回网络浏览器,但至少如果发生这种糟糕的事情,我真的很想在日志中了解它。
解决方案
推荐阅读
- coldfusion - 您可以使用结构列值的属性值过滤查询查询中的行吗?
- extjs - extjs store proxy api 在将其作为变量传递时抛出错误无法识别 url
- c# - 错误 4 参数 5:无法从 'System.Windows.Forms.DataGridViewTextBoxColumn' 转换为 'string'
- google-apps-script - 移动行并取消选中复选框
- asp.net - 带有 React 的 ASP.NET Core - 431 请求标头太长
- javascript - 使用jQuery结合Safari浏览器检测和.on('change', function()
- python - 使用 main 函数的最佳实践
- visual-studio-code - vscode 开发容器是否应该在其设置中运行 npm install ?
- javascript - 在 React 中模拟真实的鼠标点击
- sql-server - 如何设置 Zeppelin 以使用 SQL Server Windows 身份验证