Monolog für PHP: Vollständiger Leitfaden 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

Was ist Monolog und wozu wird es benötigt?

\n\n

Monolog ist eine Standardbibliothek für das Logging in PHP. Sie bietet ein flexibles und leistungsstarkes Werkzeugset zum Schreiben von Logs in verschiedene Kanäle (Dateien, Datenbanken, E-Mail, Systemjournal, externe Dienste usw.). Monolog ist der De-facto-Standard für PHP-Anwendungen, insbesondere im Ökosystem von Symfony, Laravel und anderen modernen Frameworks.

\n\n

Wozu wird diese Bibliothek benötigt? In jeder Anwendung müssen Ereignisse verfolgt werden: Fehler, Warnungen, Informationsmeldungen, Debug-Informationen. Monolog ermöglicht:

\n
    \n
  • Zentralisiertes Logging — Logs in einem einheitlichen Format und von jeder Stelle der Anwendung aus schreiben.
  • \n
  • Flexible Kanal-Konfiguration — Kritische Fehler an Telegram/Slack senden, Informationsmeldungen in eine Datei schreiben.
  • \n
  • Nachrichten formatieren — Datum, Level, Kontext, Aufrufstapel hinzufügen.
  • \n
  • Logs filtern — Nur Nachrichten eines bestimmten Levels verarbeiten.
  • \n
  • Integration mit Frameworks — In Symfony, Laravel, Yii2 wird genau Monolog verwendet.
  • \n
\n\n

Installation

\n

Monolog wird über Composer installiert — den Standard-Paketmanager für PHP.

\n
composer require monolog/monolog
\n

Wenn Sie PHP 8.0+ verwenden, wird empfohlen, die neueste stabile Version zu installieren. Nach der Installation erscheint im Projekt ein Ordner vendor und eine Datei composer.json mit der Abhängigkeit.

\n\n

Schnellstart

\n

Das einfachste Beispiel — das Schreiben eines Logs in eine Datei:

\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Monolog\\Logger;\nuse Monolog\\Handler\\StreamHandler;\n\n// Erstellen eines Loggers mit dem Kanalnamen 'my_app'\n$log = new Logger('my_app');\n// Hinzufügen eines Handlers — Schreiben in eine Datei\n$log->pushHandler(new StreamHandler('app.log', Logger::WARNING));\n\n// Jetzt kann geloggt werden\n$log->warning('Dies ist eine Warnung');\n$log->error('Dies ist ein Fehler');\n\necho "Logs wurden in app.log geschrieben";\n?>
\n

Nach der Ausführung des Skripts erscheint in der Datei app.log etwa Folgendes:

\n
[2025-04-09T10:30:00.123456+00:00] my_app.WARNING: Dies ist eine Warnung [] []\n[2025-04-09T10:30:00.123789+00:00] my_app.ERROR: Dies ist ein Fehler [] []
\n\n

Grundlegende Methoden und Funktionen

\n

Betrachten wir die wichtigsten Methoden von Monolog. Alle sind Teil der Klasse Monolog\\Logger oder verwandter Klassen.

\n\n

1. pushHandler(HandlerInterface $handler)

\n

Was es tut: Fügt einen Handler zum Stapel hinzu. Der Logger kann mehrere Handler haben, und jeder von ihnen erhält alle Nachrichten (wenn keine Filterung konfiguriert ist).

\n

Parameter:

\n
    \n
  • $handler — ein Objekt, das Monolog\\Handler\\HandlerInterface implementiert (z. B. StreamHandler, FirePHPHandler, SlackHandler).
  • \n
\n

Beispiel:

\n
$log = new Logger('app');\n$log->pushHandler(new StreamHandler('debug.log', Logger::DEBUG));\n$log->pushHandler(new StreamHandler('errors.log', Logger::ERROR));\n// Jetzt landen Nachrichten ab Level ERROR in beiden Dateien
\n\n

2. addRecord(int $level, string $message, array $context = [])

\n

Was es tut: Die grundlegende Methode zum Schreiben eines Logs. Wird normalerweise nicht direkt aufgerufen, stattdessen werden Wrapper-Methoden verwendet (debug(), info() usw.).

\n

Parameter:

\n
    \n
  • $level — das Logging-Level (Konstanten: Logger::DEBUG, Logger::INFO, Logger::WARNING usw.).
  • \n
  • $message — der Nachrichtentext.
  • \n
  • $context — ein Array mit zusätzlichen Daten (z. B. Benutzer-ID, IP-Adresse).
  • \n
\n

Beispiel:

Empfehlungen