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

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 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/monolog

Anwendungsbeispiel

<?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/klogger

Anwendungsbeispiel

<?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/analog

Anwendungsbeispiel

<?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

Empfehlungen