Cos’è il logging
Il logging di Laravel è progettato attorno al concetto di channel. Un channel è l’unità di configurazione che definisce destinazione e modalità di scrittura dei log; puoi combinare file, Slack, syslog e altre destinazioni. Internamente usa la libreria Monolog, quindi hai a disposizione un’ampia gamma di handler e formatter.Per default viene usato il channel
stack. stack è un channel genitore che raggruppa più channel.Configurazione
Tutta la configurazione del logging è centralizzata inconfig/logging.php. Il channel di default si cambia con la variabile d’ambiente LOG_CHANNEL.
Driver disponibili
Log level
Laravel supporta gli otto livelli di log definiti da RFC 5424. Sono elencati in ordine di gravità decrescente.
L’impostazione
level di un channel indica il livello minimo.
Se level è error, vengono scritti solo error e livelli superiori (critical, alert, emergency).
Uso di base
Facade Log
Con la facadeIlluminate\Support\Facades\Log scrivi messaggi di ogni livello.
La funzione helper log()
Con l’helperlog() puoi scrivere senza importare la facade Log.
Aggiungere informazioni di contesto
Passando un array di context insieme al messaggio, registri anche informazioni correlate.withContext() — context comune al channel
Se vuoi allegare context comune a tutte le successive scritture di un channel specifico, usawithContext().
Utile per informazioni come il request ID che vuoi in tutti i log.
shareContext() — context comune a tutti i channel
MentrewithContext() è limitato al channel corrente, shareContext() distribuisce il context a tutti i channel.
Configurazione dei channel
Channel stack — scrittura simultanea su più channel
Il channelstack scrive con una sola chiamata su più channel.
debug in su vanno su daily (file), mentre critical e superiori vanno anche su Slack.
Channel daily — rotazione dei log
Il channeldaily divide i file per giorno e rimuove automaticamente i vecchi.
Notifiche di errore su Slack
Ottieni un Incoming Webhook URL di Slack e impostalo nel.env.
slack nel channel stack e impostando LOG_CHANNEL=stack, verranno notificati automaticamente gli errori.
Scrivere su un channel specifico
ConLog::channel() puoi indicare esplicitamente il channel di destinazione.
Channel on-demand
ConLog::build() puoi creare al volo un channel personalizzato senza definirlo nel file di configurazione.
Utile in test o per output temporanei.
Casi d’uso pratici
Aggiungere un request ID tramite middleware
Aggiungendo un request ID a tutti i log, tracci 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.request-id viene allegato automaticamente a tutti i log.
Registrare gli avvisi di deprecation
Puoi conservare nei log gli avvisi generati dall’uso di funzionalità deprecate di PHP o Laravel..env specifica il channel.
Laravel Pail — monitoraggio dei log in tempo reale
Laravel Pail è uno strumento di sviluppo che consente di visualizzare in terminale i log dell’applicazione in tempo reale. A differenza del classico comandotail, funziona con qualsiasi driver di log, incluso Laravel Nightwatch, Sentry e Flare.
Per eseguire Pail serve l’estensione PHP PCNTL.
Installazione
Uso di base
Filtro dei log
Riepilogo
Come scegliere il livello di log
Come scegliere il livello di log
Guida alla scelta dei channel
Guida alla scelta dei channel
- Sviluppo: scrivi su file con
singleodaily - Produzione: usa
stackcombinandodaily(file) eslack(notifica errori) - Log di elaborazioni specifiche: crea un channel on-demand con
Log::build()per scrivere su un file dedicato - Monitoraggio real-time: usa
php artisan paildal terminale
Attenzioni in produzione
Attenzioni in produzione
- I log
debugpossono contenere dati sensibili. In produzione è consigliatoLOG_LEVEL=erroro superiore. - Ruota i file di log periodicamente per non riempire il disco (opzione
daysdel channeldaily). - Per le notifiche verso servizi esterni come Slack, attenzione ai rate limit: imposta il livello per notificare solo gli errori critici.