Skip to content

Exports NDJSON de log show et chronologies

Exporter les journaux unifiés macOS avec log show (styles ndjson, json, texte), éviter les pièges de fuseau horaire et bâtir des chronologies.

Publié le 4 min de lecture

En bref. Pour une chronologie, exportez avec log show --info --debug --timezone UTC --style ndjson : un objet JSON par entrée, tous les champs conservés, les heures en UTC. Sachez quelles options vous avez utilisées, car les valeurs par défaut masquent les entrées Info, Debug et les signposts. Unified Log Parser lit ces exports et produit des fichiers CSV, NDJSON et Timesketch, à partir de fichiers tracev3 ou d'exports.

Les styles de sortie de log show

log show accepte cinq styles (log help show les liste) : default, syslog, json, ndjson et compact.

StyleUne entrée correspond àConservePoints de vigilance
ndjsonun objet JSON par lignetous les champsfichiers volumineux
jsonun objet dans un grand tableautous les champsdoit être analysé d'un bloc ou lu en flux
defaultune ligne de texte + lignes de continuationheure, thread, type, activité, PID, TTL, processus, émetteur, subsystem:categorymessages sur plusieurs lignes
syslogune ligne de type syslogheure, hôte, processus, PID, émetteurpas de colonne de type
compactune ligne courtecode de type, processus, PID, threadmillisecondes uniquement, aucun décalage UTC

Les champs NDJSON comprennent timestamp, eventType, messageType, processImagePath, processID, threadID, userID, senderImagePath, subsystem, category, activityIdentifier, bootUUID, formatString et eventMessage ; les signposts ajoutent signpostName, signpostType et signpostScope. La dernière ligne d'un export NDJSON est un récapitulatif ({"count":…,"finished":1}), pas une entrée.

Les options qui changent le résultat

log show --archive case.logarchive --info --debug --timezone UTC --style ndjson > case.ndjson
  • --info et --debug : sans elles, seuls les messages Default, Error et Fault sont affichés (ainsi que les activités et les états).
  • --signpost : les signposts restent masqués sauf demande explicite.
  • --timezone UTC : sinon, chaque entrée est affichée dans le fuseau horaire enregistré avec elle, et la variable TZ n'est pas prise en compte sur les versions actuelles.
  • --start / --end / --last : limitent la fenêtre ; les formats acceptés incluent YYYY-MM-DD HH:MM:SS et un décalage explicite.
  • --predicate : filtre au moment de l'export — pratique, mais ce qui a été filtré est perdu.

Consignez la commande dans vos notes : deux exports de la même archive avec des options différentes constituent des preuves différentes.

Lire les exports dans le parseur

Déposez un export .ndjson, .json ou texte dans le parseur. Les exports sont lus en flux par blocs de 8 Mo : un tableau JSON de 400 Mo ne pose donc aucun problème. Les styles texte sont reconnus grâce à leur ligne d'en-tête (Timestamp Thread Type Activity PID TTL) ou à leurs premières lignes ; les lignes de continuation sont rattachées au message précédent. Un export en style compact est lu comme étant en UTC et signalé comme tel, car ce style ne porte aucun décalage.

Comparatif des parseurs

OutilEntréeRemarques
log show / Consolearchive ou magasin actif, sur un Macla restitution de référence
Mandiant macos-unifiedlogstracev3 + uuidtext + timesync, tout OSbibliothèque Rust et exemple unifiedlog_iterator (CSV / JSONL)
Parseur Plaso unified_loggingtracev3 dans une image ou un dossierà nommer explicitement : il ne fait pas partie du préréglage macOS par défaut
mac_apt UNIFIEDLOGEXPORTimage disqueexporte les fichiers pour un parseur
Unified Log Parserarchive, dossiers, ZIP / tar.gz, exportsmacos-unifiedlogs en WebAssembly avec corrections de fidélité à log show, filtres, triage, exports

Validé sur une archive réelle, Unified Log Parser concorde avec log show pour environ 99 % des messages de type log, activity et state. Les écarts restants tiennent surtout aux décodeurs d'objets propres à Apple (par exemple un nom d'hôte restitué par log show là où le parseur affiche <private>), aux marqueurs de troncature sur les arguments très longs, et aux signposts, que log show restitue avec des marqueurs de description internes.

Construire une chronologie

Depuis le parseur, Exporter enregistre les entrées affichées — filtres et plage temporelle en cours — dans quatre formats :

  • CSV : une ligne par entrée avec timestamp_utc, type, nom et chemin du processus, PID, thread, identifiant utilisateur, subsystem, catégorie, émetteur, activité, message, chaîne de format, UUID de démarrage, indicateurs de triage et fichier source. Les cellules commençant par =, +, - ou @ sont mises entre guillemets pour empêcher l'injection de formules dans les tableurs.
  • NDJSON : noms de champs de log show avec des horodatages UTC (2026-09-14 10:05:02.610004+0000), plus triageFlags et evidence. Réimportable.
  • JSON : les mêmes entrées dans une enveloppe qui consigne les fichiers sources, la plage temporelle et les filtres.
  • CSV Timesketch : colonnes message, datetime, timestamp_desc et timestamp (en microsecondes), prêtes à l'import.

Exportez une fenêtre étroite et filtrée pour chaque question (par exemple « TCC et Terminal, 10:00–10:55 ») plutôt que le magasin entier : une chronologie est faite pour être lue.

Pour la suite : les requêtes de triage pour décider de ce qui entre dans la chronologie, ou le tutoriel dans le navigateur.

Articles liés

Pas à pas : ouvrir une .logarchive, un dossier diagnostics ou un export log show dans Unified Log Parser, trier les constats, cibler et exporter.
Ce qu'enregistrent les journaux unifiés macOS, où se trouvent tracev3, uuidtext et timesync, ce qu'ils prouvent ou non, et une méthode d'analyse.
Collecter les journaux unifiés macOS avec log collect, une copie brute de diagnostics et uuidtext, UAC, Velociraptor ou mac_apt, sans lacunes.