Exportaciones NDJSON de log show y cronologías
Exporte los registros unificados de macOS con log show (ndjson, json, texto), evite errores de zona horaria y construya cronologías CSV o Timesketch.
En resumen. Para una cronología, exporte con log show --info --debug --timezone UTC --style ndjson: un objeto JSON por entrada, todos los campos conservados y las horas en UTC. Tenga claro qué opciones utilizó, porque los valores predeterminados ocultan las entradas Info, Debug y los signposts. Unified Log Parser lee estas exportaciones y genera archivos CSV, NDJSON y Timesketch a partir de tracev3 o de exportaciones.
Los estilos de salida de log show
log show admite cinco estilos (log help show los enumera): default, syslog, json, ndjson y compact.
| Estilo | Cada entrada es | Conserva | Precaución |
|---|---|---|---|
ndjson | un objeto JSON por línea | todos los campos | archivos grandes |
json | un objeto dentro de una gran matriz | todos los campos | debe analizarse entero o en flujo |
default | una línea de texto + líneas de continuación | hora, hilo, tipo, actividad, PID, TTL, proceso, emisor, subsistema:categoría | mensajes de varias líneas |
syslog | una línea similar a syslog | hora, host, proceso, PID, emisor | sin columna de tipo |
compact | una línea corta | código de tipo, proceso, PID, hilo | solo milisegundos, sin desfase UTC |
Los campos NDJSON incluyen timestamp, eventType, messageType, processImagePath, processID, threadID, userID, senderImagePath, subsystem, category, activityIdentifier, bootUUID, formatString y eventMessage; los signposts añaden signpostName, signpostType y signpostScope. La última línea de una exportación NDJSON es un resumen ({"count":…,"finished":1}), no una entrada.
Opciones que cambian el resultado
log show --archive case.logarchive --info --debug --timezone UTC --style ndjson > case.ndjson
--infoy--debug: sin ellas, solo se muestran los mensajes Default, Error y Fault (además de las actividades y los estados).--signpost: los signposts permanecen ocultos salvo que se soliciten.--timezone UTC: de lo contrario, cada entrada se imprime en la zona horaria registrada con ella, y en las versiones actuales no se respeta la variableTZ.--start/--end/--last: limitan la ventana; los formatos aceptados incluyenYYYY-MM-DD HH:MM:SSy un desfase explícito.--predicate: filtra en el momento de la exportación; es útil, pero no podrá recuperar lo que haya descartado.
Anote el comando en sus notas: dos exportaciones del mismo archivo con opciones distintas son evidencias distintas.
Leer exportaciones en el analizador
Arrastre una exportación .ndjson, .json o de texto al analizador. Las exportaciones se leen en flujo en bloques de 8 MB, así que una matriz JSON de 400 MB no supone ningún problema. Los estilos de texto se reconocen por su línea de encabezado (Timestamp Thread Type Activity PID TTL) o por las primeras líneas; las líneas de continuación se integran en el mensaje anterior. Una exportación de estilo compact se interpreta como UTC y se marca, porque este estilo no incluye desfase.
Comparativa de analizadores
| Herramienta | Entrada | Notas |
|---|---|---|
log show / Consola | archivo o almacén en vivo, en un Mac | la reconstrucción de referencia |
| Mandiant macos-unifiedlogs | tracev3 + uuidtext + timesync, cualquier SO | biblioteca en Rust y ejemplo unifiedlog_iterator (CSV / JSONL) |
Analizador unified_logging de Plaso | tracev3 en una imagen o carpeta | hay que indicarlo explícitamente: no forma parte del preajuste macOS predeterminado |
mac_apt UNIFIEDLOGEXPORT | imagen de disco | exporta los archivos para un analizador |
| Unified Log Parser | archivo, carpetas, ZIP / tar.gz, exportaciones | macos-unifiedlogs en WebAssembly con correcciones de fidelidad a log show, filtros, triaje y exportaciones |
Validado con un archivo real, Unified Log Parser coincidió con log show en alrededor del 99 % de los mensajes de registro, actividad y estado. Las diferencias restantes se deben sobre todo a los decodificadores de objetos propios de Apple (por ejemplo, un nombre de host que log show muestra y el analizador presenta como <private>), a los marcadores de truncamiento en argumentos muy largos y a los signposts, que log show presenta con marcadores de descripción internos.
Construir una cronología
Desde el analizador, Exportar escribe las entradas mostradas (con los filtros y el intervalo de tiempo actuales) en cuatro formatos:
- CSV: una fila por entrada con
timestamp_utc, tipo, nombre y ruta del proceso, PID, hilo, ID de usuario, subsistema, categoría, emisor, actividad, mensaje, cadena de formato, UUID de arranque, marcas de triaje y archivo de origen. Las celdas que empiezan por=,+,-o@se entrecomillan para evitar la inyección de fórmulas en hojas de cálculo. - NDJSON: nombres de campo de
log showcon marcas de tiempo UTC (2026-09-14 10:05:02.610004+0000), mástriageFlagsyevidence. Reimportable. - JSON: las mismas entradas dentro de una envoltura que registra los archivos de origen, el intervalo de tiempo y los filtros.
- CSV para Timesketch: columnas
message,datetime,timestamp_descytimestamp(microsegundos), listas para importar.
Exporte una ventana estrecha y filtrada para cada pregunta (por ejemplo, "TCC y Terminal, 10:00–10:55") en lugar del almacén completo: las cronologías están hechas para leerse.
A continuación: las consultas de triaje para decidir qué incluir en la cronología, o el recorrido en el navegador.