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
Log-Level
Laravel unterstützt die acht Log-Level aus RFC 5424. Nach absteigender Schwere sortiert:
Die Option
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.1
Middleware erzeugen
2
handle() implementieren
3
Middleware registrieren
Als globale Middleware in
bootstrap/app.php registrieren.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
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.