Php 所有例外情况下的Laravel电子邮件通知
我正在开发一个项目,我想有一个通知系统,特别是“第一天的生活”-收到电子邮件,每次异常抛出 我已经读过并实现了它所说的。我的问题是Php 所有例外情况下的Laravel电子邮件通知,php,laravel,exception-handling,Php,Laravel,Exception Handling,我正在开发一个项目,我想有一个通知系统,特别是“第一天的生活”-收到电子邮件,每次异常抛出 我已经读过并实现了它所说的。我的问题是App\Exception\Handler.php中的函数report() 我的问题: 我有一个AdminController和一个在数据库中插入一些数据的函数。查询位于try/catch中: try { // commands } catch (\Exception $e){ Log::channel('admin_submissions')->
App\Exception\Handler.php
中的函数report()
我的问题:
我有一个AdminController和一个在数据库中插入一些数据的函数。查询位于try/catch中:
try {
// commands
} catch (\Exception $e){
Log::channel('admin_submissions')->info("Could not save submission. " . $e->getMessage());
return Redirect::back()->withErrors(['Could not save submission. Try again!']);
}
出于测试目的,我在try{}
中插入了一个要抛出的错误,如下所示:
try {
$error = \Illuminate\Validation\ValidationException::withMessages([
'field_name_1' => ['Validation Message #1'],
'field_name_2' => ['Validation Message #2'],
]);
throw $error;
// commands
但未触发dd(“触发器”)
功能(如下所示)
我怎样才能保证在每个例外情况下(无论何处)都会发送一封电子邮件?
App\Exceptions\Handler.php
我修改了report函数,只是为了检查异常是否确实通过该函数:
public function report(Exception $exception)
{
dd("trigger");
if ($this->shouldReport($exception)) {
app('sneaker')->captureException($exception);
}
parent::report($exception);
}
您必须首先知道您的应用程序引发的异常类型,可能是在$dontReport
中引发的异常。如果是,您必须首先从该表中删除所有异常,然后才能获得该异常的报告。您的目的是在电子邮件中接收错误的“日志”。我的建议是使用错误处理服务,它只需要一个小时就可以集成到您的应用程序中。请参阅:Sentry将通过电子邮件通知您每个错误,并提供一个界面来浏览应用程序中的所有错误。从控制器代码中删除try catch并检查是否要报告function@ShaielndraGupta这可能会起作用,但我不能这样做,因为我使用了一个DB事务,并且在出现错误时必须使用DB::rollback()
-另外,我记录了不同类型的情况,我希望保持该文件的日志记录如果在try{}
中抛出异常,该异常将被捕获,因此不会由异常处理程序处理。$dontReport
是一个空数组,因此我认为它应该捕获任何异常,对吗?是的!删除放入AdminController
的try catch。由于该try/catch
块,异常发出将不会由App\Exceptions\Handler
处理,而是由您的catch
块处理。如果我在AdminController.php
中删除try/catch
,我如何控制我的DB::beginTransaction()
如果在AdminController.php
中出现catch
,我想您应该说的是在~AdminController中引发异常的情况下。调用数据库后,您如何处理数据库?您可以在报告中的
App\Exceptions\Handler`中执行任何操作
,您可以对数据库执行一些查询,等等