Logging für PHP: Die besten Lösungen und Bibliotheken

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

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ähig
  • alert — sofortiges Eingreifen erforderlich
  • critical — kritischer Fehler
  • error — Fehler, der kein sofortiges Eingreifen erfordert
  • warning — Warnung
  • notice — normales, aber bedeutsames Ereignis
  • info — Informationsmeldung
  • debug — 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/monolog

Beispiel 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.

Empfehlungen