logd
Anche: logging unificato
In breve
logd è il processo di macOS che gestisce il log unificato, il registro di sistema di ciò che macOS e le tue app segnalano mentre funzionano. Ogni processo consegna i suoi messaggi a logd, che li comprime, tiene in memoria quelli recenti e salva gli altri in un archivio di log su disco, dove li leggono l’app Console e il comando log nel Terminale.
C’è un solo logd, gira come root e launchd lo avvia all’accensione del Mac. Da macOS Sierra, la maggior parte dei messaggi non finisce più in file di testo in /var/log. Le app li consegnano a logd, che li salva in un formato binario compresso in /var/db/diagnostics, con il testo fisso di ogni messaggio conservato in /var/db/uuidtext. Ecco perché il log si legge con Console o con il comando log invece di aprire un file.
Il suo uso di CPU e disco segue quanto scrive nel log il resto del Mac. Su un Mac tranquillo usa una frazione di punto percentuale. Quando logd è in cima all’elenco, non è quasi mai colpa sua: un altro processo sta scrivendo messaggi molto più in fretta del solito, e logd fa il lavoro di salvarli.
Perché logd usa così tanta CPU o disco
Un’app o un processo in background sta scrivendo nel log in loop. Un processo che fallisce e riprova molte volte al secondo, come un client di rete che non riesce a raggiungere il suo server, una sincronizzazione bloccata o un driver che segnala sempre lo stesso errore, può scrivere centinaia di migliaia di messaggi al minuto. logd li comprime e li salva tutti, e la sua CPU e i suoi Byte scritti salgono di conseguenza.
Il logging aggiuntivo attivato per risolvere un problema ha lo stesso effetto. Un profilo di logging installato per una segnalazione di bug, o una modifica fatta con il comando log config, fa salvare a logd messaggi che di solito terrebbe solo in memoria.
Cosa fare
Trova il processo che inonda il log e occupati di quello, non di logd. Nel Terminale, log stats --last 5m ordina i processi in base a quanto hanno scritto nel log negli ultimi cinque minuti. Chiudi o aggiorna l’app in cima, oppure riavvia il Mac se si tratta di un processo in background bloccato.
Se hai installato un profilo di logging che non ti serve più, rimuovilo in Impostazioni di Sistema → Generali → Gestione dispositivi. Chiudere logd non serve: macOS lo riavvia subito, e il processo che inonda il log continua.
Come trovare il processo che inonda il log
È logd che salva i messaggi, quindi la domanda utile è chi li sta scrivendo. Monitoraggio Attività mostra il costo e il Terminale mostra il colpevole.
- Apri Monitoraggio Attività, fai clic sul pannello CPU, scegli Vista → Tutti i processi e digita
logdnel campo di ricerca. Annota la sua % CPU. - Fai clic sul pannello Disco e guarda Byte scritti di logd. Un valore che sale in fretta significa che sta salvando su disco una valanga di messaggi.
- Svuota il campo di ricerca e ordina il pannello CPU per % CPU. Il processo che inonda il log spesso è occupato a sua volta, e potrebbe riavviarsi più e più volte con un nuovo PID ogni volta.
- Apri il Terminale ed esegui
log stats --last 5m. Sotto processes elenca i processi che hanno scritto più messaggi nel log negli ultimi cinque minuti, con il loro numero di eventi e di byte. WindowServer e alcuni altri processi di sistema scrivono molto nel log su ogni Mac, quindi cerca un processo con una quota insolita, o uno che dovrebbe essere inattivo. - Per leggere cosa sta scrivendo quel processo, esegui
log show --last 5m --predicate 'process == "Name"', con il nome del processo al posto di Name. Per seguirlo in tempo reale, usalog streamcon lo stesso predicato, e premi Control-C per fermarti.
Uso normale di logd e quando è un problema
Normale: logd resta ben sotto qualche punto percentuale di CPU, con brevi aumenti quando il Mac si avvia, si riattiva dallo standby o quando si aprono molte app insieme.
Da controllare: logd resta in cima all’elenco CPU per minuti interi, oppure i suoi Byte scritti continuano a crescere in fretta mentre fai poco. Queste sono le cause più comuni:
- Un processo che fallisce e riprova in un loop serrato, come un client di rete che non riesce a raggiungere il suo server o una sincronizzazione bloccata.
- Un helper che va in crash e viene riavviato subito, scrivendo nel log ogni volta lo stesso avvio e lo stesso errore.
- Il logging di debug o info attivato con
log config, o da un profilo di logging installato per una segnalazione di bug. - Un’app con il logging dettagliato attivato nelle sue impostazioni, o una build di prova di un’app che registra tutto.
- Console lasciata in streaming, o uno strumento che legge di continuo il log in tempo reale. Quel costo si vede soprattutto in diagnosticd, il compagno di logd.
Leggere il log in Console
Console, in Applicazioni → Utility, mostra lo stesso log in una finestra. Fai clic su Avvia nella barra degli strumenti per vedere i messaggi man mano che arrivano, e digita il nome di un processo nel campo di ricerca per mostrare solo i messaggi che lo nominano. Quando un processo riempie lo schermo più in fretta di quanto riesci a leggere, hai trovato ciò che tiene occupato logd.
Interrompi lo streaming quando hai finito. Mentre Console mostra il log in tempo reale, diagnosticd e i processi che scrivono nel log fanno lavoro in più, che è l’opposto di quello che vuoi su un Mac già occupato.
Domande frequenti
Cos’è logd sul Mac?
Il processo di macOS dietro il log unificato. Ogni app e ogni processo di sistema inviano i loro messaggi a logd, che li comprime e li salva perché Console e il comando log possano mostrarli.
Perché logd usa tanta CPU?
Quasi sempre perché un altro processo sta scrivendo messaggi nel log in loop, e logd deve salvarli tutti. Esegui log stats --last 5m nel Terminale per vedere quale processo scrive di più.
Posso eliminare i log che conserva logd?
Puoi, ma raramente c’è un motivo per farlo. macOS elimina da solo i messaggi vecchi quando l’archivio dei log raggiunge il suo limite di dimensione, quindi non cresce all’infinito. Se devi svuotarlo, sudo log erase --all rimuove i messaggi salvati, insieme alla cronologia che servirebbe a te o al supporto Apple per diagnosticare un problema. Non eliminare a mano /var/db/diagnostics o /var/db/uuidtext.
Cos’è diagnosticd sul Mac?
Un’altra parte del sistema di logging unificato. logd salva i messaggi, e diagnosticd li consegna in tempo reale a Console e a log stream. Usa più CPU solo mentre uno di questi mostra il log in tempo reale.
Si può chiudere logd senza rischi?
Non fa danni duraturi, perché macOS lo riavvia subito, ma non serve nemmeno. Il processo che inondava il log continua, e logd riprende il lavoro appena si riavvia.
Correlati
Cerchi qualcosa di meglio di Monitoraggio Attività? Leggi le migliori alternative a Monitoraggio Attività per Mac, oppure sfoglia tutti i termini del glossario.