如何将 laravel 日志文件数据存储到数据库中(5.5)[关闭]

Posted

技术标签:

【中文标题】如何将 laravel 日志文件数据存储到数据库中(5.5)[关闭]【英文标题】:How to store laravel log file data into database(5.5) [closed] 【发布时间】:2019-11-01 08:06:25 【问题描述】:

我需要将 Laravel 日志存储到我的数据库中。你能帮帮我吗?

【问题讨论】:

【参考方案1】:

转到 App/Exceptions/Handler.php 然后在 report() 函数中编写以下代码并将您的模型定义为 ErrorLog

        $data = [
            'id'      => $this->createUniversalUniqueIdentifier(),
            'file'    => $exception->getFile(),
            'line'    => $exception->getLine(),
            'message' => $exception->getMessage(),
            'trace'   => $exception->getTraceAsString(),
        ];

          $dataArr =['id'     => $data['id'],
             'file'           => $data['file'],
             'error_summary'  => 'Line '.$data['line'].' '.$data['message'],
             'log_trace'      => $data['trace']
             ];
        ErrorLog::create($dataArr);

你的模型文件应该是这样的 错误日志.php 受保护的 $table = '日志'; 受保护的 $fillable = ['ID', '文件', 'error_summary', 'log_trace' ];

【讨论】:

【参考方案2】:

Laravel supports Monolog 用于处理日志。 Monolog 支持许多不同的处理程序,包括像MongoDB handler 这样的数据库处理程序。

您可以通过在config/logging.php 文件中的channels 数组中添加一个新通道来使用 MongoDB 处理程序,例如:

'channels' => [
    'mongolog' => [
        'driver'  => 'monolog',
        'handler' => Monolog\Handler\MongoDBHandler::class,
        'with' => [
            'database' => 'mongo-database-name',
            'collection' => 'log-collection-name',
        ],
    ],

然后您可以在.env 文件中将默认日志通道设置为mongolog,例如LOG_CHANNEL=mongolog.

【讨论】:

但这只在 laravel 5.6+ 中支持

以上是关于如何将 laravel 日志文件数据存储到数据库中(5.5)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将 Laravel 存储文件夹移动到 Amazon s3

laravel 怎样打数据库每一步操作日志

使用 Laravel 5.0 存储门面将元数据、标头(Expires、CacheControl)添加到上传到 Amazon S3 的文件中

如何将值从数据库中的laravel存储到数组中?

Laravel 5 将数据记录到另一个文件

Laravel框架中如何使用事件记录SQL查询到日志