Logging für PHP: Die besten Lösungen
Logging ist ein wesentlicher Bestandteil jeder ernsthaften PHP-Anwendung. Es hilft, Fehler zu verfolgen, Benutzerverhalten zu analysieren, Sicherheitsaudits durchzuführen und Code zu debuggen. In diesem Artikel betrachten wir die besten Bibliotheken für Logging in PHP, ihre Besonderheiten und Anwendungsbeispiele.
Warum ist Logging notwendig?
Ohne Logging ist der Entwickler bei Problemen oft "blind". Ein qualitativ hochwertiges Logging-System ermöglicht:
- Schnelles Auffinden und Beheben von Fehlern in der Production-Umgebung
- Erfassung von Statistiken und Analyse der Leistung
- Sicherstellung der Einhaltung von Sicherheitsstandards (PCI DSS, GDPR)
- Überwachung verdächtiger Aktivitäten
Der Standard PSR-3 (Logger Interface)
Die meisten modernen PHP-Bibliotheken folgen dem Standard PSR-3, der eine einheitliche Schnittstelle für Logger definiert. Dies ermöglicht den einfachen Austausch einer Bibliothek gegen eine andere, ohne den Anwendungscode zu ändern.
Die grundlegenden Logging-Level nach PSR-3:
emergency— System nicht funktionsfähigalert— sofortiges Eingreifen erforderlichcritical— kritischer Fehlererror— Fehler, der kein sofortiges Eingreifen erfordertwarning— Warnungnotice— normales, aber bedeutsames Ereignisinfo— Informationsmeldungdebug— Debug-Informationen
Die besten Bibliotheken für Logging in PHP
1. Monolog
Monolog ist der De-facto-Standard für Logging in PHP. Es unterstützt PSR-3, bietet eine große Anzahl von "Handlern" und "Formatierern". Die Installation erfolgt über Composer:
composer require monolog/monologBeispiel für die grundlegende Verwendung:
<?phpuse Monolog\\Logger;use Monolog\\Handler\\StreamHandler;
$log = new Logger('my_app');$log->pushHandler(new StreamHandler('/var/log/app.log', Logger::WARNING));
$log->warning('Warnung: Anfragenlimit überschritten');$log->error('Fehler bei der Datenbankverbindung', ['db' => 'mysql', 'time' => 0.5]);?>Monolog unterstützt das Senden von Logs an Dateien, Datenbanken, Slack, Telegram, E-Mail, Syslog und viele andere Kanäle. Die flexible Architektur ermöglicht die Erstellung eigener Handler.
2. Analog
Analog ist eine leichte und schnelle Bibliothek, die auf Einfachheit ausgelegt ist. Sie erfordert keine Abhängigkeiten und ist ideal für kleine Projekte.
<?phprequire_once 'Analog.php';
Analog::handler(Analog\\Handler\\File::init('/var/log/app.log'));Analog::log('Seite geladen', Analog::INFO);?>Analog unterstützt dieselben Logging-Level wie PSR-3, hat aber eine eigene API. Für die Integration mit PSR-3 kann die Brücke AnalogPSR3 verwendet werden.
3. KLogger
KLogger ist eine minimalistische Bibliothek, die einst beliebt war. Ihre Entwicklung wurde inzwischen eingestellt, aber sie wird immer noch in älteren Projekten verwendet. Beispiel:
<?php$log = new Katzgrau\\KLogger\\Logger('/var/log/');$log->info('Benutzer hat sich angemeldet');?>Aufgrund fehlender PSR-3-Unterstützung und Updates wird sie für neue Projekte nicht empfohlen.
4. Log4php
Log4php ist ein Port des beliebten Java-Frameworks Log4j. Es unterstützt komplexe Konfigurationen über XML oder PHP-Arrays:
<?phprequire_once 'Logger.php';Logger::configure('config.xml');
$logger = Logger::getLogger('main');$logger->error('Kritischer Fehler');?>Log4php hat eine steile Lernkurve, bietet aber leistungsstarke Funktionen: Filterung, mehrere Appender, Makros.
Auch in der Bibliothek
QR-Code-Generator in Go (Golang) mit der Bibliothek go-qrcode
InversifyJS: IoC-Container für TypeScript-Anwendungen
Symfony/Mailer für PHP: Komplettanleitung mit Beispielen
WebSocket-Bibliotheken für Rust: Tokio-tungstenite und async-tungstenite für Echtzeit