Может ли Laravel 4 регистрироваться в базе данных MySQL?

Если да, то как это можно сделать? По умолчанию L4 записывает в текстовый файл. Я замечаю, что Monolog может записывать в базу данных на странице github.

Ответ 1

Да, вы могли бы создать слушателя, чтобы записывать все в route.php

Event::listen('laravel.log', function($type,$message)
{
    $log = new Log();
    $log->message = $message;
    $log->type = $type;
    $log->update;
});

Или, если вы хотите только регистрировать ошибки 400 и 500 Larvavel, в файле Routes.php есть событие журнала, которое слушает ошибки 404 и 500, вы можете написать свой собственный код в этом прослушивателе событий. Предположим, что у вас есть модель с именем Log,

Event::listen('404', function()
{
    $error = "404: " . URL::full();
    Log::error($error);
    $update = new Log();
    $update->error = $error;
    $update->update;
    return Response::error('404');
});

Event::listen('500', function()
{
    Log::error($error);
    $update = new Log();
    $update->error = $error;
    $update->update;
    return Response::error('500');
});

Ответ 2

Как вы можете видеть, читаете ли вы дальше заголовок, Monolog изначально поддерживает запись в Redis, MongoDB и CouchDB. Эти трое все поддерживают довольно громкие записи (и очень тяжелые записи в случае Redis). MySQL не существует, поскольку регистрация в MySQL на самом деле не самая лучшая идея в мире.

Если вы действительно хотите это сделать, вы можете проверить документы на создание собственного обработчика, в котором объясняется, как создавать и использовать обработчик PDO для записи в базу данных SQL: https://github.com/Seldaek/monolog/blob/master/doc/extending.md - Я все еще думаю, что это плохая идея, но, возможно, это оправдано.

Ответ 3

Поскольку у меня был такой же спрос в моем проекте, я создал обработчик для Монолога, чтобы написать вывод журнала в MySQL. Он выдается под лицензией MIT и доступен через композитор или непосредственно на GitHub. Возможно, стоит попробовать.

Ответ 4

В laravel 5 теперь это illuminate.log

Теперь это будет как

Event::listen('illuminate.log', function($type,$message)
{
    ....
});