Задать вопрос
besogonskiy
@besogonskiy
работаю php laravel разработчиком.

Можно ли сделать логирование всех mysql запросов чтоб подневно создавались файлы логов?

у нас слишком жирный файл логирования sql запросов. За несколько дней набирается 40-50 гигов. При этом в логи попадают выполняемые запросы но вместо переданных значений указывается знак вопроса "?"

Можно ли настроить в Laravel логирование данного канала чтобы каждый день создавался лог с новым файлом и и чтобы видеть запрос полностью - вместе с передаваемыми в запрос параметрами?
  • Вопрос задан
  • 371 просмотр
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
AmdY
@AmdY
PHP и прочие вебштучки
Логировать можно без проблем самому https://laravel.com/docs/9.x/database#listening-fo...
Стоит поискать готовый пакет, который уже имеет весь требуемый функционал.
Ответ написан
Комментировать
Alixx
@Alixx
Можно, я сделала следующим образом, может кому пригодится:
class SqlLoggingServiceProvider extends ServiceProvider
{
    public function boot()
    {
        if (config("database.connections." . env('DB_CONNECTION') . ".logging")) {
            DB::listen(function ($query) {
                Log::channel('sql') // название канала, указанное в конфиге
                    ->info($query->sql, ['time' => $query->time, 'bindings' => $query->bindings]);
            });
        }
    }
    //..
}

В config/database.php в нужном подключении (у меня pgsql) надо добавить строки
'connections' => [
    //...
    'pgsql' => [
        //..
        'logging' => true,
        'channel' => 'sql', // название канала
    ]
],

В config/logging.php добавляем данные о канале sql
'channels' => [
        //..
        'sql' => [
            'driver' => 'daily',
            'path' => storage_path('sql/laravel.log'),
            'level' => 'debug',
            'days' => 7,
        ],
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы