itelmenko/laravel-mysql-logger

Laravel MySQL 驱动程序,用于 Monolog

v1.0.7 2023-07-26 14:17 UTC

README

此包会将错误记录到 MySQL 数据库,而不是 storage/log/laravel.log 文件。

安装

composer require itelmenko/laravel-mysql-logger

如果您希望更改默认的表名或数据库连接,请在您的 .env 文件中使用以下定义

DB_LOG_TABLE=logs
DB_LOG_CONNECTION=mysql

对于 Laravel < 5.5,打开 config/app.php 并找到 providers 键。

'providers' => array(
    // ...
    ITelmenko\Logger\Laravel\Providers\MonologMysqlHandlerServiceProvider::class,
);

config/logging.php

<?php
    // [...]

    'channels' => [

        // [...]

        'mysql' => [
            'driver' => 'custom',
            'via' => ITelmenko\Logger\Laravel\Logging\MySQLLogger::class,
            'connection' => env('DB_LOG_CONNECTION'),
            'table' => env('DB_LOG_TABLE'),
            'name' => 'my.channel' // optional
        ],
    ],

使用 Laravel Artisan CLI 发布配置。

php artisan vendor:publish

并选择选项 Provider: ITelmenko\Logger\Laravel\Providers\MonologMysqlHandlerServiceProvider

迁移表。

php artisan migrate

ITelmenko\Logger\Laravel\Exceptions\MysqlLoggerInsertException 添加到您的 ExceptionHandler 中,以防止在数据库连接失败时发生循环

public function register()
{
    $this->reportable(function (Throwable $e) {
        if ($this->shouldReport($e) && app()->bound('sentry')) {
            app('sentry')->captureException($e);
        }
        if ($e instanceof MysqlLoggerInsertException) {
            return false; // prevent looping 
        }
    });
}

使用

在您的应用程序的某个位置

Log::channel('mysql')->info('Something happened!');

待办事项

  • $table->bigIncrements('id') 修改为类似 ULID 的内容
  • 将根命名空间更改为 ITelmenko
  • 从模型中删除 extra 字段
  • 删除 updated_at 吗?
  • created_at 添加微秒数
  • 更新版本和 readme.md(关于迁移更改,关于 vendor:publish)
  • 添加 php doc
  • 添加 phpcs