2013-03-23 9 views

Odpowiedz

9

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'); 
}); 
5

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.

+2

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

+0

Dlaczego przechowywanie logów w MySQL nie jest dobrym pomysłem? –

+0

@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

0

Jak miałem ten sam popyt w moim projekcie, ja stworzyliśmy obsługi dla Monolog napisać wyjście dziennika MySQL. Jest wydany na licencji MIT i dostępny pod numerem composer lub bezpośrednio pod numerem GitHub. Może warto spróbować.

0

W laravel 5 teraz jest illuminate.log

Teraz to będzie jak

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