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

时间:2018-08-06 12:18:49

标签: mysql laravel laravel-5

任何人都知道如何将错误消息发送到从app / exceptions / handler.php生成的laravel数据库中吗?

我需要将在report()方法中生成的错误消息发送到数据库。

2 个答案:

答案 0 :(得分:1)

由于Laravel uses Monolog用于处理日志,因此看来写Monolog Handler是最干净的方法。

我能够找到已经存在的东西,请查看monolog-mysql package。我没有使用它,所以我不知道它是否有效以及是否有效,但这绝对是一个很好的起点。

答案 1 :(得分:0)

如果您有兴趣手动执行此操作,则可以执行以下操作。

第1步- 创建一个模型来存储具有如下数据库结构的错误。

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

第2步 找到App / Exceptions / Handler.php文件,包括Auth和您创建的Error模型。并用以下代码替换报告功能。

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);
}

(我正在使用laravel 5.6进行演示)