Leggere log macOS da Terminale: comandi utili
Leggere log macOS da Terminale è possibile senza installare applicazioni aggiuntive, grazie al comando integrato log. Lo strumento consente di consultare gli eventi già registrati, seguire i messaggi mentre vengono generati e filtrare i risultati per processo, servizio o parola chiave. Il comando funziona con il sistema di log unificato introdotto da Apple nelle versioni moderne di macOS. Per le ricerche più semplici non servono privilegi di amministratore, anche se alcuni dati possono essere nascosti dalle protezioni della privacy. Con pochi parametri è possibile isolare errori di un’app, problemi di rete o attività sospette avvenute in un intervallo preciso.
Quali informazioni contiene il log unificato di macOS
Il sistema di log unificato di macOS raccoglie messaggi prodotti dal sistema operativo, dai servizi Apple e dalle applicazioni installate. I dati non sono organizzati soltanto in semplici file di testo: ogni evento può includere data e ora, processo responsabile, livello di severità, sottosistema e testo del messaggio.
Il comando log permette di consultare principalmente due tipi di informazioni:
- Gli eventi storici già memorizzati dal sistema.
- Gli eventi generati in tempo reale da macOS e dalle applicazioni.
- I messaggi classificati come errore, avviso, informazione o debug.
- Gli eventi associati a un processo, a un sottosistema o a una parola contenuta nel testo.
Le registrazioni possono essere soggette a rotazione automatica, quindi macOS non conserva necessariamente ogni evento prodotto dall’installazione del sistema. Inoltre, alcuni messaggi contengono dati privati oscurati o non accessibili senza autorizzazioni specifiche.
Per verificare la sintassi disponibile sulla versione installata di macOS, è possibile consultare la pagina di manuale integrata:
man log
Come leggere i log storici di macOS
Il comando log show visualizza gli eventi già presenti nel sistema. Senza filtri può produrre una quantità molto elevata di righe, perciò è preferibile limitare subito l’intervallo temporale o il tipo di messaggio.
Visualizzare gli eventi recenti
Per leggere gli eventi dell’ultima ora, apri Terminale dalla cartella Applicazioni > Utility e usa:
log show --last 1h
Il parametro --last accetta intervalli come ore, giorni o minuti. Per esempio, il comando seguente limita la ricerca agli ultimi trenta minuti:
log show --last 30m
Per rendere l’output più leggibile in formato simile ai log tradizionali, aggiungi l’opzione --style syslog:
log show --last 1h --style syslog
Il risultato può essere lungo e Terminale può mostrare rapidamente molte righe. Per leggerlo una schermata alla volta, invia l’output al comando less:
log show --last 1h --style syslog | less
Premi la barra spaziatrice per avanzare, usa le frecce per scorrere e premi Q per uscire dalla visualizzazione.
Cercare gli eventi di un intervallo preciso
Quando il problema è avvenuto in un momento noto, puoi usare --start e --end con data e ora. Un esempio è:
log show --start "2026-08-13 09:00:00" --end "2026-08-13 10:00:00"
Il formato della data deve essere coerente con quello riconosciuto dalla versione di macOS installata. Se il comando restituisce un errore, la sintassi accettata può dipendere dalla localizzazione o dalla release del sistema; in quel caso l’opzione --last è generalmente più semplice.
Come filtrare gli errori e i messaggi di un’app
La ricerca senza filtri è utile per un controllo generale, ma un predicato consente di selezionare soltanto gli eventi che interessano. Il parametro --predicate usa il linguaggio dei predicati di Apple e può filtrare campi come process, subsystem, category ed eventMessage.
Cercare una parola nel testo del messaggio
Per cercare la parola “network” negli eventi dell’ultima ora, usa:
log show --last 1h --predicate 'eventMessage CONTAINS[c] "network"'
L’operatore CONTAINS[c] esegue una ricerca senza distinguere tra lettere maiuscole e minuscole. Per cercare errori relativi a un’applicazione, sostituisci la parola con il nome visualizzato nel messaggio o con un termine specifico del problema.
Un filtro più generale per individuare eventi che contengono “error” è:
log show --last 2h --style compact --predicate 'eventMessage CONTAINS[c] "error"'
La presenza della parola “error” non dimostra sempre un guasto: alcuni servizi registrano messaggi tecnici o tentativi ripetuti che non hanno conseguenze visibili.
Filtrare un processo specifico
Per cercare gli eventi generati da un processo, usa il campo process. Per esempio, il filtro seguente cerca i messaggi prodotti da Finder:
log show --last 1h --predicate 'process == "Finder"'
Il nome deve corrispondere al processo registrato da macOS, che non sempre coincide con il nome completo dell’applicazione. Se il filtro non restituisce risultati, cerca prima il nome del processo usando una parola nel campo eventMessage oppure riduci l’intervallo temporale.
Per combinare processo e parola chiave, puoi usare l’operatore AND:
log show --last 1h --predicate 'process == "Finder" AND eventMessage CONTAINS[c] "error"'
Mostrare messaggi informativi e di debug
Per impostazione predefinita, l’output può non includere tutti i livelli meno importanti. Le opzioni --info e --debug ampliano i risultati, ma possono aumentare sensibilmente il numero di righe:
log show --last 30m --info --debug
È consigliabile usare queste opzioni soltanto con un intervallo breve o insieme a un predicato. I messaggi di debug non sono sempre attivi per ogni servizio e la loro disponibilità può variare in base alla versione di macOS.
Come monitorare i log in tempo reale
Il comando log stream mostra gli eventi mentre vengono generati. È utile per riprodurre un problema, collegare una periferica, aprire un’applicazione o eseguire un’operazione di rete osservando contemporaneamente ciò che registra macOS.
Per avviare il monitoraggio degli eventi recenti e interromperlo con Control-C, usa:
log stream
Per seguire soltanto gli eventi informativi ed evitare parte del rumore, puoi specificare il livello:
log stream --level info
Per monitorare una parola chiave mentre esegui un’operazione, applica un filtro:
log stream --predicate 'eventMessage CONTAINS[c] "USB"'
Per osservare un’applicazione specifica:
log stream --predicate 'process == "Finder"'
Il monitoraggio in tempo reale può produrre molte righe al secondo. Un predicato preciso rende più facile associare un messaggio all’azione appena eseguita e riduce il carico visivo su Terminale.
Come salvare e interpretare l’output del comando log
Per conservare una ricerca in un file di testo, puoi reindirizzare l’output con il simbolo >:
log show --last 1h --style syslog > ~/Desktop/log-macos.txt
Il file viene salvato sulla Scrivania dell’utente e può essere aperto con un editor di testo. Evita di condividere pubblicamente log non controllati, perché possono contenere nomi utente, percorsi locali, indirizzi di rete, identificativi di dispositivo o informazioni sulle attività svolte.
Per consultare soltanto alcune righe dell’output, puoi usare grep:
log show --last 1h --style syslog | grep -i "error"
Il comando grep filtra il testo già prodotto da log, ma non sostituisce --predicate: per ricerche complesse è preferibile filtrare direttamente i campi strutturati degli eventi.
Se macOS nega l’accesso a una parte dei dati, non significa necessariamente che il comando sia errato. Le protezioni di privacy e sicurezza possono limitare i dettagli disponibili, soprattutto per processi di sistema, dati personali e componenti protetti. L’uso di sudo non garantisce l’accesso a tutte le registrazioni e dovrebbe essere evitato quando non è necessario.
Per un’analisi tecnica più ampia, macOS include anche il comando log collect, che crea un archivio diagnostico destinato alla risoluzione dei problemi. Questo archivio può contenere molte informazioni sul sistema e va condiviso soltanto con persone o servizi affidabili:
sudo log collect --output ~/Desktop/diagnostica-macos.logarchive
Il comando richiede normalmente l’autenticazione amministrativa e può impiegare tempo in base alla quantità di dati raccolti. Per la semplice consultazione degli eventi quotidiani, log show e log stream sono generalmente sufficienti.
Leggere log macOS da Terminale diventa più efficace quando si combina un intervallo breve con un filtro mirato e si conserva l’output solo dopo averne verificato il contenuto.
FAQ
Il comando principale è log show, che visualizza gli eventi già registrati. L’opzione –last limita la ricerca a un intervallo recente, come l’ultima ora o l’ultimo giorno.
Usa log stream in Terminale. Il comando mostra gli eventi in tempo reale e si interrompe premendo Control-C.
Sì, puoi filtrare il campo process con l’opzione –predicate. Il nome deve corrispondere al processo effettivamente registrato da macOS.
macOS può oscurare o limitare i dati per motivi di privacy e sicurezza. L’uso di sudo non garantisce l’accesso a tutte le registrazioni protette.
Reindirizza l’output di log show verso un file, per esempio sulla Scrivania. Controlla il contenuto prima di condividere il file, perché può contenere informazioni personali.
Altri articoli di questa serie:
- Mostrare file nascosti macOS Terminale: comando rapido
- Disattivare riapertura finestre macOS: metodo rapido
- Personalizzare anteprime icone Finder con defaults
- Percorso completo Finder macOS nella barra del titolo
- Disattivare DS_Store unità di rete Mac: metodo rapido
- Ricerca metadati Spotlight Terminale con mdls e mdfind
- Ricostruire indice Spotlight macOS Terminale
- Controllare consumo energetico Mac Terminale con powermetrics
- Trovare i processi che rallentano il Mac da Terminale
- Controllare la pressione memoria macOS Terminale
- Come misurare l’avvio lento delle app su Mac
- Rapporto processi bloccati macOS spindump: come crearlo
- Verificare firma applicazioni macOS Terminale
- Permessi privacy delle app Mac: come controllarli
- Gestire programmi avvio automatico macOS con launchctl
- Creare servizio launchd macOS per attività periodiche
- Confrontare cartelle macOS Terminale con diff
- Rinominare file in massa su macOS dal Terminale
- Proteggere file sensibili su macOS dal Terminale
