Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir/Phoenix LiveView:如何向Rollbar报告异常?_Elixir_Phoenix Framework_Phoenix Live View - Fatal编程技术网

Elixir/Phoenix LiveView:如何向Rollbar报告异常?

Elixir/Phoenix LiveView:如何向Rollbar报告异常?,elixir,phoenix-framework,phoenix-live-view,Elixir,Phoenix Framework,Phoenix Live View,我在仍然测试版的库中玩得很开心。有一件事我很困惑,那就是如何确保我的LiveView在发生异常时能够以可预测和透明的方式运行 在传统的基于HTTP请求的世界中,我希望特定的请求崩溃,返回500个响应,并且可能返回一些错误页面,向用户指示“嘿,服务器有问题”。开发人员可以依靠集成,例如检测和报告异常,因此我收到一封关于错误的电子邮件,并可以在Rollbar仪表板中检查它 但是当我的LiveView代码崩溃时,我没有得到这样的保证。朗视进程将从崩溃中恢复过来(正如我所理解的),恢复到它最后一个已知的

我在仍然测试版的库中玩得很开心。有一件事我很困惑,那就是如何确保我的LiveView在发生异常时能够以可预测和透明的方式运行

在传统的基于HTTP请求的世界中,我希望特定的请求崩溃,返回500个响应,并且可能返回一些错误页面,向用户指示“嘿,服务器有问题”。开发人员可以依靠集成,例如检测和报告异常,因此我收到一封关于错误的电子邮件,并可以在Rollbar仪表板中检查它

但是当我的LiveView代码崩溃时,我没有得到这样的保证。朗视进程将从崩溃中恢复过来(正如我所理解的),恢复到它最后一个已知的健康状态,这真的很酷,但也可能会招致用户的挫败感(例如,“每次提交表单时,它会显示一个加载图标,然后还原为空白表单”)。我不清楚如何在LiveView中检测或捕获异常,以便向Rollbar这样的错误监控服务报告。(缺少不切实际的解决方案,例如为每个处理程序添加一个
rescue

如何检测LiveView中发生的异常,以便a)以某种方式提醒最终用户问题,b)确保向开发人员报告异常?

可以覆盖回调。从Phoenix LiveView文档:

如果在有状态生命周期的任何时候遇到崩溃,或者客户端连接断开,客户端将正常地重新连接到服务器,并将其签名会话传递回
mount/2

也就是说,如果你希望你的LiveView进程因为某种原因变成僵尸,你可能会。维护已连接套接字的列表以及时间戳,并在以非预期方式重新连接时发出警报

但是当我的LiveView代码崩溃时,我没有得到这样的保证。LiveView进程将从崩溃中恢复,并(据我所知)恢复到其上次已知的正常状态

LiveView处理恢复的方式是让clent启动一个新的LiveView进程。因此,如果出现错误,当前的LiveView进程实际上将崩溃,这将向Elixir的记录器发送一条消息,该记录器很可能被Rollbax截获(我假设它集成了记录器)。因此,当涉及到错误处理时,一切都应该起作用

如何检测LiveView中发生的异常,以便a)以某种方式提醒最终用户问题,b)确保向开发人员报告异常


计划是,连接装载上的错误将刷新页面,迫使请求通过常规的HTTP连接请求,然后该请求将像在LiveView之外一样引发。任何其他处理程序上的错误都将导致重新连接,这将触发已连接的装载(随后也可能失败并回退到HTTP)。但在所有这些情况下,都有一个过程,因此错误应该到达Rollbax。

明白了,我忘记了Rollbax有一个集成来获取日志消息。我想这能满足我的需要!您能否提供更多关于如何挂接(覆盖)mount/2以捕获liveview重新连接的情况的详细信息?您是否建议检查会话是否存在某种情况,以将重新连接识别为崩溃,然后从会话向Rollbax报告一些情况?