Logging für PHP: Die besten Lösungen und Werkzeuge
Logging ist eine der Kernaufgaben bei der Entwicklung jeder Webanwendung in PHP. Ohne qualitativ hochwertiges Logging ist es unmöglich, Code effektiv zu debuggen, Fehler in der Produktionsumgebung zu verfolgen und das Benutzerverhalten zu analysieren. In diesem Artikel betrachten wir die besten Bibliotheken und Werkzeuge für Logging in PHP, ihre Besonderheiten und Anwendungsbeispiele.
Warum ist richtiges Logging wichtig?
Ein einfacher Aufruf von error_log() oder das Schreiben in eine Datei mit file_put_contents() reicht nicht mehr aus, wenn das Projekt wächst. Moderne Lösungen bieten:
- Unterstützung von PSR-3 (Standard für die Logging-Schnittstelle);
- Flexible Handler (Dateien, DB, syslog, E-Mail, Slack);
- Formatierung von Nachrichten (JSON, Plain Text, HTML);
- Log-Level (debug, info, notice, warning, error, critical, alert, emergency);
- Möglichkeit zur Filterung und Rotation von Logs.
1. Monolog — Der De-facto-Standard
Monolog ist die beliebteste Bibliothek für Logging in PHP (über 300 Millionen Downloads auf Packagist). Sie ist vollständig PSR-3-konform und unterstützt Dutzende von Handlern und Formatierern.
Installation
composer require monolog/monologAnwendungsbeispiel
<?phprequire 'vendor/autoload.php';
use Monolog\\Logger;use Monolog\\Handler\\StreamHandler;use Monolog\\Handler\\FirePHPHandler;
// Logger erstellen$log = new Logger('my_app');$log->pushHandler(new StreamHandler(__DIR__.'/app.log', Logger::WARNING));$log->pushHandler(new FirePHPHandler());
// Nachrichten protokollieren$log->warning('Achtung: Anfragenlimit überschritten');$log->error('Fehler bei der Datenbankverbindung', ['db' => 'mysql', 'time' => 1.5]);?>Wichtige Funktionen
- Handler: StreamHandler, RotatingFileHandler, SyslogHandler, SwiftMailerHandler, SlackHandler u. a.
- Formatierer: LineFormatter, JsonFormatter, HtmlFormatter, LogstashFormatter.
- Prozessoren: Hinzufügen von Kontext (IP, URI, Sitzung) zu jeder Nachricht.
- Unterstützung von Logger-Gruppen und Kanälen.
Monolog ist ideal für große Projekte, Frameworks (Symfony, Laravel verwenden es standardmäßig) und Microservice-Architekturen.
2. KLogger — Eine leichte Alternative
KLogger ist eine einfache, aber effektive Bibliothek für diejenigen, die keine hundert Handler benötigen. Sie implementiert PSR-3 und funktioniert "out of the box".
Installation
composer require katzgrau/kloggerAnwendungsbeispiel
<?phprequire 'vendor/autoload.php';
use Katzgrau\\KLogger\\Logger;
$log = new Logger(__DIR__.'/logs');$log->info('Benutzer registriert', ['user_id' => 42]);$log->debug('Debug: API-Anfrage', ['url' => '/api/v1/data']);?>Besonderheiten
- Automatische Log-Rotation nach Datum;
- Minimale Anzahl von Abhängigkeiten;
- Unterstützung von Log-Leveln;
- Einfache API (nur wenige Methoden).
KLogger eignet sich für kleine Projekte, Skripte und Anwendungen, bei denen Einfachheit wichtig ist.
3. Analog — Flexibel und minimalistisch
Analog ist eine Bibliothek, die es ermöglicht, die Logging-Methode einfach zu ändern, ohne den Code zu modifizieren. Sie verwendet das Konzept einer "Maschine" (machine), die bestimmt, wohin und wie Logs geschrieben werden.
Installation
composer require analog/analogAnwendungsbeispiel
<?phprequire 'vendor/autoload.php';
use Analog\\Analog;use Analog\\Handler\\File;
// Schreiben in eine Datei konfigurierenAnalog::handler(File::init(__DIR__.'/app.log'));
// ProtokollierenAnalog::warning('Update erforderlich Auch in der Bibliothek
Socket.io für JavaScript (Node.js): Vollständiger Leitfaden mit Beispielen
OAuth-Client für PHP: Integration mit Google, GitHub und VK
Elasticsearch-Client für Kotlin: Integration, Beispiele und Möglichkeiten
GuzzleHTTP/Promises für PHP: Komplette Anleitung mit Beispielen