Skip to main content

Wat is logging

De logging van Laravel is opgebouwd rond het concept van channels. Een channel is een configuratie-eenheid die bepaalt waar en hoe logs worden weggeschreven; je kunt allerlei uitvoerbestemmingen combineren, zoals bestanden, Slack en syslog. Intern wordt de bibliotheek Monolog gebruikt, waardoor je toegang hebt tot een breed scala aan handlers en formatters.
Standaard wordt het channel stack gebruikt. stack is een parent-channel dat meerdere channels bundelt.

Configuratie

De loggingconfiguratie is gecentraliseerd in config/logging.php. Met de omgevingsvariabele LOG_CHANNEL wissel je het standaardchannel.

Beschikbare channeldrivers

Logniveaus

Laravel ondersteunt de acht logniveaus die zijn gedefinieerd in RFC 5424. Ze staan gerangschikt van hoogste naar laagste ernst. De instelling level van een channel betekent het minimale logniveau. Is level bijvoorbeeld error, dan wordt alleen error en hoger (critical, alert, emergency) weggeschreven.

Basisgebruik

De Log-facade

Met de facade Illuminate\Support\Facades\Log schrijf je berichten op elk niveau weg.
Een voorbeeld in een controller:

De log()-helperfunctie

Met de log()-helper kun je schrijven zonder de Log-facade te importeren.

Contextinformatie toevoegen

Geef je samen met het bericht context (een array) door, dan leg je gerelateerde informatie in één keer vast.

withContext() — gedeelde context toevoegen aan een heel channel

Wil je voor een specifiek channel gemeenschappelijke informatie toevoegen aan alle volgende logentries, gebruik dan withContext(). Dit is geschikt voor informatie die je in alle logs wilt opnemen, zoals een request-ID.

shareContext() — gedeelde context toevoegen aan alle channels

Waar withContext() alleen effect heeft op het doelchannel, voegt shareContext() gemeenschappelijke context toe aan alle channels.

Channels configureren

Het stack-channel — tegelijk naar meerdere channels schrijven

Met het stack-channel schrijf je met één logaanroep naar meerdere channels.
Met deze configuratie worden alle logs vanaf debug naar daily (bestand) geschreven, en wordt alleen critical en hoger ook naar slack gestuurd.
In productie is het aan te raden om het niveau van het slack-channel op error of critical te zetten. Stuur je ook lichte logs naar Slack, dan krijg je een stortvloed aan meldingen en raken belangrijke alerts ondergesneeuwd.

Het daily-channel — logrotatie

Het daily-channel splitst de bestanden per datum en verwijdert oude bestanden automatisch.
Maak je days kleiner, dan worden oude logs eerder verwijderd. Zorg voor een voldoende lange bewaartermijn met het oog op het onderzoeken van storingen in productie.

Foutmeldingen naar Slack

Haal een Incoming Webhook URL van Slack op en stel die in in .env.
Neem slack op in het stack-channel en stel LOG_CHANNEL=stack in; bij fouten krijg je dan automatisch een melding.

Naar een specifiek channel schrijven

Met Log::channel() geef je expliciet het doelchannel op.

On-demand channels

Met Log::build() maak je ter plekke een aangepast channel zonder het in het configuratiebestand te definiëren. Handig voor tests of het schrijven naar een tijdelijke uitvoerbestemming.

Praktische use-cases

Een request-ID toevoegen via middleware

Door aan alle logs een gemeenschappelijke request-ID toe te voegen, kun je in de logs eenvoudiger het verloop van een specifiek request volgen.
1

Maak de middleware aan

2

Implementeer de handle()-methode

3

Registreer de middleware

Registreer de middleware als globale middleware in bootstrap/app.php.
Na deze configuratie krijgen alle logs automatisch een request-id.

Deprecation-waarschuwingen loggen

Je kunt waarschuwingen loggen wanneer deprecated functionaliteit van PHP of Laravel wordt gebruikt.
Geef het channel op in .env.

Laravel Pail — logs in realtime volgen

Laravel Pail is een ontwikkeltool waarmee je de logs van je applicatie in realtime in de terminal bekijkt. Anders dan het standaard tail-commando is Pail ontworpen om te werken met elke logdriver, waaronder Laravel Nightwatch, Sentry en Flare.
Voor het uitvoeren van Pail is de PCNTL-extensie van PHP vereist.

Installatie

Basisgebruik

Logs filteren

Samenvatting

  • Ontwikkelomgeving: naar bestand schrijven met single of daily
  • Productie: stack met een combinatie van daily (bestandsopslag) en slack (foutmeldingen)
  • Logs van specifieke processen: met Log::build() een on-demand channel maken en naar een apart bestand schrijven
  • Realtime monitoring: bekijken vanuit de terminal met php artisan pail
  • debug-logs kunnen gevoelige informatie bevatten. In productie wordt LOG_LEVEL=error of hoger aanbevolen.
  • Roteer logbestanden regelmatig zodat ze de schijf niet vol laten lopen (de instelling days van het daily-channel).
  • Let bij meldingen naar externe services zoals Slack op rate limits. Stel het niveau zo in dat alleen ernstige fouten worden gemeld.
Laatst gewijzigd op 6 september 2026