Psr/Log PHP: Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Psr/Log für PHP: Vollständige Anleitung mit Beispielen

Logging ist einer der wichtigsten Aspekte bei der Entwicklung jeder ernsthaften Anwendung. Ohne Logging ist es unmöglich, Fehler in der Produktionsumgebung zu debuggen, das Benutzerverhalten nachzuvollziehen oder die Systemleistung zu analysieren. Wenn jedoch in einem Projekt mehrere Bibliotheken verwendet werden, die jeweils ihre eigenen Logs schreiben, entsteht schnell Chaos: unterschiedliche Level, verschiedene Formate und diverse Ausgabemethoden. Genau für dieses Problem wurde der Standard PSR-3 (Logger Interface) entwickelt.

Psr/Log ist keine Logging-Bibliothek im eigentlichen Sinne, sondern eine standardisierte Schnittstelle (eine Sammlung von Verträgen), die definiert, wie ein universeller Logger in PHP aussehen sollte. Sie stellt acht Methoden zum Schreiben von Nachrichten mit unterschiedlichen Prioritätsstufen zur Verfügung (emergency, alert, critical, error, warning, notice, info, debug) sowie eine universelle Methode log(). Jede Bibliothek, die PSR-3 implementiert, kann problemlos in jedes Projekt integriert werden, das diese Schnittstelle erwartet. Dies ermöglicht es Entwicklern, die Logger-Implementierung (z. B. von Monolog auf Analog) zu wechseln, ohne den Anwendungscode ändern zu müssen.

In diesem Artikel werden wir die Bibliothek psr/log im Detail behandeln – von der Installation bis hin zu komplexen Praxisbeispielen. Sie erfahren, wie Sie jede Methode korrekt einsetzen, Nachrichten mit Platzhaltern formatieren und typische Fehler vermeiden. Der Stoff ist sowohl für Anfänger, die sich gerade mit PHP vertraut machen, als auch für erfahrene Entwickler geeignet, die ihr Wissen strukturieren möchten.

Installation

Die Bibliothek psr/log wird über Composer installiert, den Standard-Abhängigkeitsmanager für PHP. Führen Sie im Terminal folgenden Befehl aus:

composer require psr/log

Nach der Installation erscheint im Projekt das Verzeichnis vendor/psr/log. Wenn Sie ein Framework (Laravel, Symfony) verwenden, ist PSR-3 wahrscheinlich bereits enthalten. Um den Autoloader in Ihrem PHP-Skript einzubinden, fügen Sie folgende Zeile hinzu:

require __DIR__ . '/vendor/autoload.php';

Hinweis: psr/log ist nur das Interface. Für das tatsächliche Schreiben von Logs benötigen Sie eine Implementierung, z. B. monolog/monolog. Installation von Monolog:

composer require monolog/monolog

Schnellstart

Erstellen wir ein einfaches Logging-Beispiel mit Monolog (der beliebtesten PSR-3-Implementierung).

<?php
require 'vendor/autoload.php';

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// Logger mit dem Namen 'my_logger' erstellen
$log = new Logger('my_logger');

// Handler hinzufügen: Alle Nachrichten ab Level DEBUG in die Datei app.log schreiben
$log->pushHandler(new StreamHandler(__DIR__ . '/app.log', Logger::DEBUG));

// Einige Nachrichten schreiben
$log->info('Anwendung gestartet');
$log->warning('Konfigurationsdatei konnte nicht geladen werden, verwende Standardwerte');
$log->error('Kritischer Fehler: Datenbank nicht verfügbar');

echo "Logs wurden geschrieben. Überprüfen Sie die Datei app.log";

Nach der Ausführung dieses Skripts sehen Sie in der Datei app.log etwa Folgendes:

[2025-04-10T15:30:45.123456+00:00] my_logger.INFO: Anwendung gestartet [] []
[2025-04-10T15:30:45.123789+00:00] my_logger.WARNING: Konfigurationsdatei konnte nicht geladen werden, verwende Standardwerte [] []
[2025-04-10T15:30:45.124012+00:00] my_logger.ERROR: Kritischer Fehler: Datenbank nicht verfügbar [] []

Dies ist ein minimales funktionierendes Beispiel. Nun werden wir jede Methode des Interfaces im Detail besprechen.

Die wichtigsten Methoden des Psr\Log\LoggerInterface

Das Interface Psr\Log\LoggerInterface definiert 9 Methoden. Die ersten 8 sind Methoden für spezifische Log-Level, die neunte ist die universelle Methode log()

Empfehlungen