Was ist Logging?
Das Logging von Laravel ist rund um das Konzept Channels aufgebaut. Ein Channel definiert, wohin und wie Logs geschrieben werden. Dateien, Slack, Syslog und viele weitere Ausgabeziele lassen sich kombinieren. Unter der Haube kommt Monolog zum Einsatz – mit einer Vielzahl an Handlern und Formattern.Standardmäßig kommt der Channel
stack zum Einsatz. stack ist ein übergeordneter Channel, der mehrere Channels bündelt.Konfiguration
Die Logging-Konfiguration liegt zentral inconfig/logging.php. Den Standard-Channel wechseln Sie über die Umgebungsvariable LOG_CHANNEL.
Verfügbare Channel-Treiber
| Treiber | Beschreibung |
|---|---|
single | Schreibt alle Logs in eine einzige Datei |
daily | Rotiert pro Tag in separate Dateien |
slack | Sendet Nachrichten an einen Slack-Incoming-Webhook |
stack | Elternteil, der mehrere Channels bündelt |
syslog | Schreibt in das System-Syslog |
errorlog | Schreibt in das PHP-Error-Log |
monolog | Verwendet direkt einen Monolog-Handler |
custom | Vollständig anpassbarer Channel über eine Factory-Klasse |
Log-Level
Laravel unterstützt die acht Log-Level aus RFC 5424. Nach absteigender Schwere sortiert:| Level | Beispielverwendung |
|---|---|
emergency | Das gesamte System ist nicht mehr verwendbar; sofortiges Eingreifen erforderlich |
alert | Sofortiges Eingreifen nötig (z. B. Datenbank nicht erreichbar) |
critical | Kritische Störung, bei der zentrale Funktionen ausfallen |
error | Laufzeitfehler; Handlung erforderlich, oft aber nicht sofort |
warning | Potenzielles Problem, veraltete APIs, unerwartete Daten |
notice | Normalbetrieb, aber bemerkenswert |
info | Reguläre Aktionen wie Login oder Bestellabschluss |
debug | Detaillierte Debug-Informationen während der Entwicklung |
level eines Channels beschreibt den Mindest-Log-Level.
Bei level = error werden nur error und höher (critical, alert, emergency) geschrieben.
Grundlegende Verwendung
Die Log-Facade
Verwenden Sie die FacadeIlluminate\Support\Facades\Log, um pro Level zu loggen.
Helper log()
Der Helper log() funktioniert ohne den Import der Facade.
Kontextinformationen hinzufügen
Übergeben Sie zusätzlich zu Nachricht ein Kontext-Array, um zusammengehörige Informationen zu erfassen.withContext() – gemeinsamen Kontext für einen Channel
Wenn Sie für einen bestimmten Channel jeden folgenden Log-Eintrag mit gemeinsamen Informationen versehen möchten, verwenden SiewithContext(). Gut geeignet für z. B. eine Request-ID.
shareContext() – gemeinsamen Kontext für alle Channels
withContext() wirkt nur auf einen Channel. shareContext() verteilt den Kontext auf alle Channels.
Channels konfigurieren
Der stack-Channel – gleichzeitig in mehrere Ziele schreiben
Mitstack schreibt ein einziger Log-Aufruf in mehrere Channels.
debug in daily, und nur critical oder schlimmer geht zusätzlich an slack.
daily – Log-Rotation
Derdaily-Channel rotiert Logs pro Tag und löscht ältere Dateien automatisch.
Fehlerbenachrichtigungen an Slack
Erstellen Sie eine Incoming Webhook URL in Slack und hinterlegen Sie sie in der.env.
slack-Channel im stack-Channel und setzen Sie LOG_CHANNEL=stack, um bei Fehlern automatische Benachrichtigungen zu erhalten.
In einen bestimmten Channel schreiben
MitLog::channel() wählen Sie den Ziel-Channel explizit aus.
On-Demand-Channels
MitLog::build() erzeugen Sie einen Channel spontan, ohne ihn in der Konfigurationsdatei zu definieren.
Praktisch für Tests oder temporäre Log-Ziele.
Praxisbeispiele
Middleware mit Request-ID
Wenn Sie allen Logs eine gemeinsame Request-ID hinzufügen, lässt sich der Verlauf einer einzelnen Anfrage leicht nachvollziehen.
Ab jetzt enthalten alle Log-Einträge automatisch die
request-id.
Deprecation-Warnungen loggen
Sie können Warnungen zu veralteten PHP- oder Laravel-Funktionen protokollieren..env legen Sie den Channel fest.
Laravel Pail – Logs in Echtzeit anzeigen
Laravel Pail ist ein Entwicklungs-Tool, das Application-Logs live im Terminal darstellt.Für Pail benötigen Sie die PHP-Erweiterung PCNTL.
Installation
Grundlegende Nutzung
Logs filtern
Zusammenfassung
Log-Level richtig wählen
Log-Level richtig wählen
| Level | Wann verwenden? |
|---|---|
emergency | Kritischer Ausfall, das gesamte System ist unbrauchbar |
alert | Ein Mensch muss sofort eingreifen |
critical | Zentrale Funktionen sind ausgefallen |
error | Unerwarteter Laufzeitfehler, Reaktion erforderlich |
warning | Veraltete Nutzung oder unerwartete Daten – zu beachten |
notice | Normal, aber protokollierenswert |
info | Nutzeraktionen und Business-Events |
debug | Detaillierte Debug-Infos (in der Produktion meist nicht nötig) |
Wahl des Channels
Wahl des Channels
- Entwicklungsumgebung:
singleoderdailyin Dateien schreiben. - Produktion:
stackmitdaily(Dateipersistenz) undslack(Fehlermeldungen) kombinieren. - Spezielle Logs: Mit
Log::build()einen On-Demand-Channel für eine separate Datei anlegen. - Echtzeit-Monitoring:
php artisan pailim Terminal.
Hinweise für die Produktion
Hinweise für die Produktion
debug-Logs können sensible Informationen enthalten. In der Produktion empfiehlt sichLOG_LEVEL=erroroder höher.- Rotieren Sie Log-Dateien regelmäßig, damit die Festplatte nicht volläuft (Option
daysdesdaily-Channels). - Achten Sie bei Slack o. Ä. auf Rate Limits. Legen Sie den Level so, dass nur wichtige Fehler benachrichtigen.