Skip to main content

Cos’è il logging

Il logging di Laravel è progettato intorno al concetto di canali. Un canale è un’unità di configurazione che definisce dove e come scrivere i log. Puoi combinare file, Slack, syslog e altre destinazioni. Internamente usa la libreria Monolog, sfruttando handler e formatter ricchi.
Di default viene usato il canale stack, un canale “genitore” che raggruppa più canali.

Configurazione

La configurazione del logging è in config/logging.php. La variabile d’ambiente LOG_CHANNEL cambia il canale predefinito.

Driver di canale disponibili

Livelli di log

Laravel supporta gli 8 livelli definiti in RFC 5424. In ordine di gravità decrescente: Il level di un canale è il livello minimo: se è error, solo error e superiori (critical, alert, emergency) vengono scritti.

Uso di base

Facade Log

Usa la facade Illuminate\Support\Facades\Log per scrivere ai vari livelli.
Esempio in un controller.

Funzione helper log()

Con l’helper log() scrivi senza importare la facade Log.

Aggiungere informazioni di contesto

Passando un array di contesto insieme al messaggio memorizzi informazioni correlate.

withContext() — contesto comune a livello di canale

Se vuoi che tutte le voci successive di un canale includano informazioni comuni (come un request ID) usa withContext().

shareContext() — contesto comune a tutti i canali

withContext() è limitato al canale bersaglio; shareContext() propaga il contesto a tutti i canali.

Configurazione dei canali

Canale stack — scrittura simultanea su più canali

Con stack scrivi in più canali con una sola chiamata.
Con questa configurazione tutti i log da debug in su vanno in daily (file) e solo quelli da critical in su vanno anche in Slack.
In produzione conviene impostare il livello del canale slack a error o critical. Con log leggeri finirebbero troppe notifiche e le alert importanti si perderebbero.

Canale daily — rotazione dei log

Il canale daily scrive file separati per giorno ed elimina automaticamente i più vecchi.
Riducendo days i log vecchi spariscono prima. Prevedi un periodo di ritenzione sufficiente per l’analisi dei problemi.

Notifica errori su Slack

Ottieni un Incoming Webhook URL e mettilo nel .env.
Includendo slack nel canale stack e impostando LOG_CHANNEL=stack ottieni la notifica automatica sugli errori.

Scrivere in un canale specifico

Con Log::channel() scegli esplicitamente il canale.

Canali on-demand

Con Log::build() crei al volo un canale personalizzato senza definirlo nel file di configurazione. Utile per test o output temporanei.

Casi d’uso pratici

Assegnare un request ID in un middleware

Aggiungendo un request ID comune a tutti i log tracci più facilmente il flusso di una singola richiesta.
1

Crea il middleware

2

Implementa handle()

3

Registra il middleware

Registralo come middleware globale in bootstrap/app.php.
Dopo la configurazione, tutti i log conterranno automaticamente request-id.

Log dei warning di deprecation

Puoi registrare i warning dovuti a funzionalità deprecate di PHP o Laravel.
Indica il canale nel .env.

Laravel Pail — monitoraggio log in tempo reale

Laravel Pail è uno strumento di sviluppo per vedere i log dell’applicazione in tempo reale dal terminale.
Per eseguire Pail serve l’estensione PHP PCNTL.

Installazione

Uso di base

Filtro dei log

  • Sviluppo: single o daily su file
  • Produzione: stack con daily (file) e slack (notifica errori)
  • Log specifici: canale on-demand con Log::build() su file dedicato
  • Monitoraggio real-time: php artisan pail dal terminale
  • I log debug possono contenere info sensibili. In produzione usa almeno LOG_LEVEL=error.
  • Ruota i file periodicamente per non riempire il disco (opzione days del canale daily).
  • Attenzione ai rate limit dei servizi esterni come Slack. Configura il livello per notificare solo gli errori gravi.
Ultima modifica il 13 luglio 2026