Heim  >  Artikel  >  PHP-Framework  >  Laravel-Entwicklung: Wie verwende ich Laravel Logging zum Protokollieren?

Laravel-Entwicklung: Wie verwende ich Laravel Logging zum Protokollieren?

王林
王林Original
2023-06-13 17:21:192472Durchsuche

Laravel ist ein beliebtes PHP-Framework, das über viele integrierte Funktionen verfügt, die unsere Entwicklung erleichtern, darunter auch die Protokollierung. Durch das Aufzeichnen von Protokollen können wir Probleme im Programm schnell lokalisieren und die Stabilität und Wartbarkeit des Programms verbessern. In diesem Artikel erfahren Sie, wie Sie mit Laravel Logging protokollieren.

  1. Einführung in Laravel Logging

Laravel Logging ist eine in das Laravel-Framework integrierte Protokollierungsmethode. Es schreibt Protokolle auf verschiedene Speichermedien, indem es Treiber wie Dateien, Datenbanken, Syslog, Redis usw. angibt. Im Laravel-Framework ist der Standardtreiber eine einzelne Datei, wir können den Standardtreiber jedoch auch durch einfache Konfiguration ändern, um ihn an unterschiedliche Situationen anzupassen.

  1. Laravel Logging konfigurieren

Standardmäßig befindet sich die Konfigurationsdatei von Laravel Logging unter config/logging.php. In dieser Datei können wir die globale Protokollkonfiguration definieren, z. B. den Standardprotokolltreiber, den Speicherort der Protokolldateien und die Verarbeitungsmethoden für verschiedene Protokollebenen.

Standardmäßig aktiviert Laravel Logging den Treiber für eine einzelne Datei unter storage/logs/laravel.log. Im Laravel-Framework können Protokollnachrichten mithilfe der Protokollfassade eingeführt werden, zum Beispiel:

use IlluminateSupportFacadesLog;
Log::info('This is an information message.');
Log::error('Something went wrong.');

Mit dem obigen Code können Sie Informationen und Protokollnachrichten auf Fehlerebene in die Standardprotokolldatei schreiben seine Schreibweise.

  1. Protokolldateien konfigurieren

Zusätzlich zur Standard-Protokolltreiberdatei können wir auch andere Treiber verwenden, z. B. datierte Dateien, Protokollrotation, Senden von Protokollen an Remote-Dienste über HTTP-Anfragen usw. In der Datei config/logging.php können wir den Protokolltreiber und die Parameter direkt definieren, zum Beispiel:

'daily' => [
    'driver' => 'daily',
    'path' => storage_path('logs/laravel.log'),
    'level' => 'debug',
    'days' => 14,
],

'syslog' => [
    'driver' => 'syslog',
    'level' => 'warning',
]

Wir können den täglichen Treiber verwenden, um die Protokolldateien nach Datum aufzuteilen, und der Zyklus jeder Datei beträgt 14 Tage. Wir können den Syslog-Treiber auch verwenden, um Protokollnachrichten an den Protokollierungsdienst des Systems zu senden, beispielsweise an den Linux-Syslogd-Daemon.

  1. Kontextinformationen aufzeichnen

In praktischen Anwendungen müssen wir häufig einige Kontextinformationen gleichzeitig aufzeichnen, z. B. Benutzer-ID, angeforderte URI, Client-IP-Adresse usw. In Laravel Logging können wir diese Informationen über den Protokollkontext aufzeichnen.

Zum Beispiel können wir in einer HTTP-Anfrage den folgenden Code verwenden, um einige Kontextinformationen in der Protokolldatei aufzuzeichnen:

use IlluminateSupportFacadesLog;
Log::channel('mylog')->withContext([
    'user_id' => $request->user()->id,
    'ip' => $request->getClientIp(),
    'uri' => $request->getUri(),
])->info('An information message with context.');

Im obigen Code verwenden wir die Kanalmethode der Log-Fassade und geben ein Protokoll mit dem Namen mylog aisle an . Verwenden Sie dann die Methode „withContext“, um einige Kontextinformationen an den Logger zu übergeben, und verwenden Sie schließlich die Methode „Info“, um die Protokollnachricht in einer Datei zu protokollieren.

  1. Maßgeschneiderte Laravel-Protokollierung

Zusätzlich zur Verwendung der Standardkonfiguration von Laravel Logging können wir auch ein komplexeres Protokollierungssystem implementieren, indem wir eine benutzerdefinierte Logger-Komponente schreiben.

Zuerst müssen wir eine neue Protokollkanalkonfiguration erstellen, zum Beispiel:

'custom' => [
    'driver' => 'custom',
    'via' => AppLoggingCustomLogger::class,
    'level' => 'debug',
],

In der obigen Konfiguration haben wir einen benutzerdefinierten Treiber angegeben und einen benutzerdefinierten Protokollschreiber mithilfe von AppLoggingCustomLogger::class instanziiert.

Dann können wir eine benutzerdefinierte Log-Writer-Komponente schreiben, zum Beispiel:

<?php

namespace AppLogging;

use MonologFormatterHtmlFormatter;
use MonologHandlerStreamHandler;
use MonologLogger;

class CustomLogger
{
    static public function __invoke(array $config)
    {
        $logger = new Logger('custom');

        $handler = new StreamHandler($config['path']);
        $handler->setFormatter(new HtmlFormatter());

        $logger->pushHandler($handler);

        return $logger;
    }
}

Im obigen Beispiel haben wir eine Klasse namens CustomLogger erstellt, die einige Funktionen der Monolog-Komponente verwendet, um das Schreiben in die angegebene Datei zu protokollieren und in HTML aufzuzeichnen Format.

Schließlich können wir einen benutzerdefinierten Logger auf folgende Weise verwenden:

use IlluminateSupportFacadesLog;
Log::channel('custom')->info('A custom information message.');

Auf diese Weise können wir die Implementierung von Laravel Logging vollständig steuern und individuellere Protokollierungsanforderungen erfüllen.

Zusammenfassung

Laravel Logging ist eine in das Laravel-Framework integrierte Protokollierungsmethode. Sie kann Protokollnachrichten auf verschiedenen Speichermedien wie Dateien, Datenbanken und Syslog aufzeichnen. Wir können die Aufzeichnungsmethode und den Inhalt von Protokollnachrichten durch Konfigurationsdateien und Kontextaufzeichnung steuern. Darüber hinaus können wir die Implementierung von Laravel Logging flexibel anpassen, indem wir benutzerdefinierte Logger-Komponenten schreiben. Die Protokollierung durch Laravel Logging trägt zur Stabilität und Wartbarkeit des Programms bei und ist ein sehr wichtiger Teil der Laravel-Entwicklung.

Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie verwende ich Laravel Logging zum Protokollieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn