laravel:在数据库中存储错误消息

unftdfkk  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(397)

有人知道如何将错误消息发送到从app/exceptions/handler.php生成的laravel中的数据库吗?
我需要将report()方法中生成的错误消息发送到数据库。

mgdq6dx1

mgdq6dx11#

因为laravel使用monolog来处理日志记录,所以编写monolog处理程序似乎是最干净的方法。
我能够找到一些已经存在的东西,请看一下monolog mysql包。我没有使用它,所以我不知道它是否工作,如果它工作得很好,但它肯定是一个很好的起点。

oogrdqng

oogrdqng2#

如果您有兴趣手动执行此操作,可以执行以下操作。
步骤1-创建一个模型来存储具有如下db结构的错误。

class Error extends Model
{
    protected $fillable = ['user_id' , 'code' , 'file' , 'line' , 'message' , 'trace' ];
}

步骤2找到app/exceptions/handler.php文件,包括auth和您创建的错误模型。并用以下代码替换报告函数。

public function report(Exception $exception) {

    // Checks if a user has logged in to the system, so the error will be recorded with the user id
    $userId = 0;
    if (Auth::user()) {
        $userId = Auth::user()->id;
    }

    $data = array(
        'user_id' => $userId,
        'code' => $exception->getCode(),
        'file' => $exception->getFile(),
        'line' => $exception->getLine(),
        'message' => $exception->getMessage(),
        'trace' => $exception->getTraceAsString(),
    );

    Error::create($data);
    parent::report($exception);
}

(我正在使用laravel5.6演示这一点)

相关问题