Projects [SHOW]
12. Logging
Einführung
Um Ihnen zu helfen, mehr darüber zu erfahren, was in Ihrer Anwendung passiert, bietet Laravel robuste Protokollierungsdienste, mit denen Sie Meldungen in Dateien, das Systemfehlerprotokoll und sogar in Slack protokollieren können, um Ihr gesamtes Team zu benachrichtigen.
Unter der Haube nutzt Laravel die Monolog-Bibliothek, die eine Vielzahl von leistungsstarken Log-Handlern unterstützt. Laravel macht es zu einem Kinderspiel, diese Handler zu konfigurieren, so dass Sie sie mischen und anpassen können, um die Protokollierung Ihrer Anwendung anzupassen.
Configuration
Die gesamte Konfiguration für das Protokollierungssystem Ihrer Anwendung befindet sich in der Konfigurationsdatei config/logging.php. Diese Datei ermöglicht es Ihnen, die Protokollkanäle Ihrer Anwendung zu konfigurieren, also stellen Sie sicher, dass Sie jeden der verfügbaren Kanäle und deren Optionen überprüfen. Wir werden im Folgenden einige gängige Optionen besprechen.
Standardmäßig verwendet Laravel den stack-Kanal, wenn er Nachrichten protokolliert. Der stack-Kanal wird verwendet, um mehrere Log-Kanäle zu einem einzigen Kanal zusammenzufassen.
Weitere Informationen zum Erstellen von Stapeln finden Sie in der folgenden Dokumentation.
more themes about Basics - Click for open
Advanced Monolog Channel Customization
Customizing Monolog For Channels
Manchmal benötigen Sie die vollständige Kontrolle darüber, wie Monolog für einen bestehenden Kanal konfiguriert ist. Beispielsweise können Sie eine benutzerdefinierte Monolog FormatterInterface-Implementierung für die Handler eines bestimmten Kanals konfigurieren.
Um zu beginnen, definieren Sie ein tap-Array in der Konfiguration des Kanals. Das tap-Array sollte eine Liste von Klassen enthalten, die die Möglichkeit haben sollten, die Monolog-Instanz nach ihrer Erstellung anzupassen (oder "anzutippen"):
'single' => [ 'driver' => 'single', 'tap' => [App\Logging\CustomizeFormatter::class], 'path' => storage_path('logs/laravel.log'), 'level' =>
'debug', ],
Sobald Sie die tap-Option auf Ihrem Kanal konfiguriert haben, können Sie die Klasse definieren, die Ihre Monolog-Instanz anpassen soll. Diese Klasse benötigt nur eine einzige Methode: __invoke Aufruf, der eine Illuminate\Log\Logger-Instanz empfängt. Die Illuminate\Log\Logger-Instanz proxiert alle Methodenaufrufe an die zugrunde liegende Monolog-Instanz:
<?php
namespace App\Logging;
class CustomizeFormatter
{
/**
* Customize the given logger instance.
*
* @param \Illuminate\Log\Logger $logger
* @return void
*/
public function __invoke($logger)
{
foreach ($logger->getHandlers() as $handler) {
$handler->setFormatter(...);
}
}
}