我应该如何处理Laravel应用程序中Vue组件中的严重错误



【澄清】

我正在使用Vue组件编写我的第一个Laravel应用程序;它是CRUD。我知道如何通过Log::error("There is an error")技术向laravel.log报告重大问题,但这只有在我使用PHP代码时才有用;据我所知,没有办法从Vue组件中写入laravel.log。(如果我错了,请纠正我!!(

这就提出了一个问题,即我应该如何报告Laravel应用程序中Vue组件中的错误。我知道console.log((、Debugger for Chrome和Devtools,这些都适合开发。但是,生产中可能合理发生的错误怎么办?显然,需要通过通知用户并让用户更正他们的输入来处理用户错误,比如表单上的错误输入,但有些错误超出了用户的范围。例如,不难想象我的Vue组件由于某种原因而无法访问数据库。难道不应该把这种问题写在日志中,这样无论谁监控生产应用程序,都可以处理它吗?

专业应用程序将如何应对这种情况?

如果可能的话,我最初倾向于将其写入laravel.log,但这可能是不可能的,也可能被认为是一种糟糕的方法。我很想知道有经验的Laravel开发人员在这种情况下会做什么。也许自动向支持人员发送短信会是更好的方法。我真的不确定应该如何以现代专业的方式处理这件事。

在任何情况下,无论谁对用户无法控制的情况负责,都需要以某种方式被告知,以便他们可以开始采取必要的步骤来解决问题。此外,需要向此人提供足够的详细情况,以便能够解决问题。我希望这会包括堆栈、错误代码等。我不想把所有这些都作为文本流发送,我希望所有这些都可以在某种日志中访问。然后,您只需通知支持人员,在某个时间发生了严重程度的问题,并提醒他们在哪里可以找到详细信息。

不过,我的方法可能已经过时,可能会有更新、更好的替代方案。这些就是我的问题要找的。

我可以为您的问题给出一个通用的答案

React引入了ErrorBoundary、的概念

错误边界是React组件,它可以在其子组件树中的任何位置捕获JavaScript错误,记录这些错误,并显示回退UI,而不是崩溃的组件树。

在Vue中使用错误边界

使用vue错误边界

这个简单的handleError方法代码显示ErrorBoundary通过on-error道具接收回调函数。

<template>
<ErrorBoundary :on-error="handleError">...</ErrorBoundary>
<template>

<script>
// ...
methods: {
handleError (err, vm, info) {
// do something
}
}
// ...
</script> 

阅读npm模块的文档了解更多信息。


在处理错误时,您可以将错误传递到生产站点的链接
例如。/logging,所以它就像https://www.example.com/logging一样,并以日期:错误文件:错误消息等格式发布错误
您甚至可以在这个链接中使用身份验证令牌(尽管没有人会使用它,因为这将是前端错误,每个人都可以在控制台上看到它(。然后使用路由将这些错误记录到laravel日志中。

最新更新