Jeśli tak, to jak można to zrobić? Domyślnie L4 zapisuje do pliku tekstowego. Zauważyłem, że Monolog może logować się do bazy danych na swojej stronie github.Czy Laravel 4 może logować się do bazy danych MySQL?
Odpowiedz
Tak, można utworzyć słuchacza do logowania wszystko w routes.php
Event::listen('laravel.log', function($type,$message)
{
$log = new Log();
$log->message = $message;
$log->type = $type;
$log->update;
});
lub alternatywnie, jeśli chcieliśmy tylko dziennika błędów 400 i 500 Larvavel jest zdarzenie dziennika w pliku Routes.php który słucha błędów 404 i 500, możesz napisać swój własny kod w tym detektorze zdarzeń. Więc zakładając, że masz model o nazwie Log zdefiniowane
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');
});
Jak widać, jeśli czytasz dalej nagłówek, Monolog natywnie obsługuje zapisywanie do Redis, MongoDB i CouchDB. Te trzy wszystkie wspierają dość pisać ciężkie (i bardzo piszą ciężkie w przypadku Redis) przypadki użycia. MySQL nie istnieje, ponieważ logowanie do MySQL nie jest najlepszym pomysłem na świecie.
Jeśli naprawdę chcesz to zrobić, możesz sprawdzić dokumentację na temat tworzenia własnego programu obsługi, który wyjaśnia, jak utworzyć i użyć programu obsługi CHNP do zapisania w bazie danych SQL: https://github.com/Seldaek/monolog/blob/master/doc/extending.md - Nadal uważam, że to zły pomysł , ale może przypadek użycia to gwarantuje.
W laravel 5 teraz jest illuminate.log
Teraz to będzie jak
Event::listen('illuminate.log', function($type,$message)
{
....
});
Wystarczy poinformować, powyższy kod nie będzie faktycznie pracują w L4, chyba że specjalnie wywołać zdarzenie używając Event: :ogień(). W L4 trzeba zarejestrować słuchacza klasy Log zamiast klasy Event, np 'Log :: słuchać (function (poziom $, $ message, $ kontekstu) {// kod }) ; ' – JamesG
Dlaczego przechowywanie logów w MySQL nie jest dobrym pomysłem? –
@PavelKostenko, ponieważ jeśli masz jakąkolwiek aplikację o dużym obciążeniu, będziesz miał mnóstwo zapisów MySQL, co nie jest najlepszym rozwiązaniem dla MySQL w porównaniu do innych wyspecjalizowanych rozwiązań do rejestrowania. – Seldaek