2016-08-09 100 views
1

Ich schaue in Laravel (und jetzt eigentlich Lumen) und wie es funktioniert, so habe ich eine kleine Aufgabe der Modifizierung der Fehler Logger, um mehr über das System zu erfahren, aber ich finde nicht zu finden, wo der Logging-Code gespeichert ist /geschrieben.Wie funktioniert das Lumen/Laravel Logging System?

So ruft ich eine Fassade wie Warnung wie so:

Log::warning('log this error'); 

Wenn diese statische Funktion aufrufen nannte es zu sein scheint:

illuminate\support\Facades\Log.php 

In dieser Datei hat es eine einfache Funktion, die Gibt einfach eine Zeichenfolge zurück?

Hier ist die Spur für mich kalt, wo ist der eigentliche Protokollierungscode? Ich kann nirgendwo Code finden, der tatsächlich in die Protokolldatei schreibt.

+0

Der Rückgabewert ('log') ist der Name eines Schlüssels im _service container_. Was "log" bedeutet, ist, wo der "Logging-Code" ist. Ergo, die Fassade. –

Antwort

1

Larval verwendet Monolog, die in /vendor/monolog/monolog/src/Monolog/Logger.php gefunden werden kann. warning() ruft addRecord() auf, die die Details für die Zeile erstellt und an den Prozessor sendet, um in die Datei zu schreiben.

+0

Ich versuche eine E-Mail zu senden, wenn ein Fehler protokolliert wird. Wo finden Sie den besten Ort dafür? Das Ändern des Herstellercodes scheint nicht die beste Entscheidung dafür zu sein. – twigg

+1

Definitiv nicht. Sie können entweder eine Klasse erstellen, die den Logger erweitert, oder eine neue Funktion erstellen, die die Zeile protokolliert und eine E-Mail sendet, und dann diese Funktion anstelle von "Log" verwenden. – aynber