Was ist Monolog und wozu wird es benötigt?
\n\nMonolog 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\nWozu 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
Installation
\nMonolog wird über Composer installiert — den Standard-Paketmanager für PHP.
\ncomposer require monolog/monolog\nWenn 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.
Schnellstart
\nDas 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?>\nNach der Ausführung des Skripts erscheint in der Datei app.log etwa Folgendes:
[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\nGrundlegende Methoden und Funktionen
\nBetrachten wir die wichtigsten Methoden von Monolog. Alle sind Teil der Klasse Monolog\\Logger oder verwandter Klassen.
1. pushHandler(HandlerInterface $handler)
\nWas 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).
\nParameter:
\n- \n
$handler— ein Objekt, dasMonolog\\Handler\\HandlerInterfaceimplementiert (z. B.StreamHandler,FirePHPHandler,SlackHandler). \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\n2. addRecord(int $level, string $message, array $context = [])
\nWas es tut: Die grundlegende Methode zum Schreiben eines Logs. Wird normalerweise nicht direkt aufgerufen, stattdessen werden Wrapper-Methoden verwendet (debug(), info() usw.).
Parameter:
\n- \n
$level— das Logging-Level (Konstanten:Logger::DEBUG,Logger::INFO,Logger::WARNINGusw.). \n $message— der Nachrichtentext. \n $context— ein Array mit zusätzlichen Daten (z. B. Benutzer-ID, IP-Adresse). \n
Beispiel:
Auch in der Bibliothek
Arbeiten mit Bildern in Kotlin: Bibliotheken und Codebeispiele
Hyper für Rust: Vollständige Anleitung mit Beispielen
Generierung von PDF-Berichten in Java: Überblick über Bibliotheken und Werkzeuge
gRPC für Rust: Bibliotheken und Anwendungsbeispiele
conditional-type-checks für TypeScript: Komplettguide mit Beispielen
Empfehlungen