3 votos

¿Cómo añadir metadatos al archivo de registro para que funcione `log show --last`?

Cada vez que ejecuto el log show desde la línea de comandos, recibo un mensaje de advertencia, log: warning: The log archive contains partial or missing metadata .

Esto parece impedirme utilizar el --last para limitar la salida al intervalo de tiempo más reciente. El fallo log devuelve un estado de salida de 65 años.

% log show --last 2s --style syslog                    
log: warning: The log archive contains partial or missing metadata
log: cannot use --last when archive metadata is missing
% echo $?
65

Lo que quiero que ocurra es algo similar a lo que obtengo cuando uso el --start con una marca de tiempo en el pasado reciente. El comando exitoso devuelve un estado de salida de 0.

% date
Fri 10 Jan 2020 18:43:56 PST
% log show --start "2020-01-10 18:44:00" --style syslog
log: warning: The log archive contains partial or missing metadata
Skipping info and debug messages, pass --info and/or --debug to include.
Timestamp                       (process)[PID]    
2020-01-10 18:44:04.459968-0800  localhost xpcproxy[99272]: (libsystem_info.dylib) Created Activity ID: 0x1f9010, Description: Retrieve User by ID
2020-01-10 18:44:04.460147-0800  localhost xpcproxy[99273]: (libsystem_info.dylib) Created Activity ID: 0x1f9020, Description: Retrieve User by ID
…[snip, remaining output elided]…
% echo $?
0

¿Cómo puedo conseguir que el archivo de registro contenga suficientes metadatos para que log show --last 2s funciona como yo quiero?

Esto se observa en MacOS High Sierra 10.13.6. Mi cuenta tiene acceso de administrador, que el log requiere para devolver cualquier contenido. El acceso se demuestra con el log --start comando con éxito.

2voto

Lucia Puntos 922

Tengo una respuesta muy poco satisfactoria a esta pregunta: esperar 10 días y esperar que el problema desaparezca por sí solo.

Este enfoque me ha funcionado:

% date                             
Sun 19 Jan 2020 07:26:30 PST
% log show --last 2s --style syslog
Skipping info and debug messages, pass --info and/or --debug to include.
Timestamp                       (process)[PID]    
% echo $?
0

Tenga en cuenta que el mensaje, log: warning: The log archive contains partial or missing metadata ya no aparece, y el --last ahora funciona.

Mientras investigaba, me encontré con un ensayo muy útil, Dentro del registro de macOS: logd y los archivos que gestiona , por Howard Oakley. Esto me llevó a los directorios /var/db/diagnostics/ y /var/db/uuidtext/ .

Observo que los subdirectorios /var/db/diagnostics/Persist/ y /var/db/diagnostics/Special/ contienen opacos .tracev3 archivos de datos:

% cd /var/db/diagnostics 
% ls -lF@ Persist 
total 533688
-rw-r--r--@ 1 root  admin   2730128 21 Dec 14:02 0000000000000061.tracev3
    com.apple.logd.metadata       40 
-rw-r--r--@ 1 root  admin  10477520 22 Dec 20:45 0000000000000062.tracev3
    com.apple.logd.metadata       40 
…[snip, omitted for brevity]…
-rw-r--r--@ 1 root  admin  10479128 18 Jan 22:56 000000000000007b.tracev3
    com.apple.logd.metadata       40 
-rw-r--r--@ 1 root  admin   2431808 19 Jan 06:29 000000000000007c.tracev3
    com.apple.logd.metadata       40 
% ls -lF@ Special 
total 35624
-rw-r--r--  1 root  admin     1544 10 Jan 06:35 0000000000000048.tracev3
-rw-r--r--  1 root  admin     1536 13 Jan 04:43 0000000000000049.tracev3
-rw-r--r--  1 root  admin     1416 18 Jan 04:56 000000000000004b.tracev3
-rw-r--r--  1 root  admin   258128 19 Jan 05:25 000000000000004c.tracev3
-rw-r--r--@ 1 root  admin  2082432  8 Jan 02:58 000000000000004d.tracev3
    com.apple.logd.metadata      40 
-rw-r--r--@ 1 root  admin  2087952 10 Jan 21:52 000000000000004e.tracev3
    com.apple.logd.metadata      40 
…[snip, omitted for brevity]…
-rw-r--r--@ 1 root  admin  2097344 18 Jan 23:11 0000000000000054.tracev3
    com.apple.logd.metadata      40 
-rw-r--r--@ 1 root  admin   984016 19 Jan 06:27 0000000000000055.tracev3
    com.apple.logd.metadata      40 

Oakley dice que el MacOS Registro El sistema rota estos archivos: elimina gradualmente el contenido antiguo e innecesario, y luego borra por completo los archivos viejos. Los sellos de fecha lo respaldan. Tenga en cuenta que los más antiguos tracev3 archivo en Special/ sólo tiene 10 días. Existían archivos más antiguos en este directorio cuando tuve el problema originalmente, pero ahora han desaparecido.

Es interesante que muchos (pero no todos) de estos archivos contienen un atributo de archivo extendido "com.apple.logd.metadata". Oakley, en xattr: com.apple.logd.metadata, log metadata , dice "su contenido y función son desconocidos". Especulo que el término "metadata" en el mensaje de error podría ser una referencia a los datos del xattr "com.apple.logd.metadata".

Por lo tanto, una suposición salvaje es que un archivo en /var/db/diagnostics/Special/ tenía un xattr "com.apple.logd.metadata" corrompido o desaparecido. En el transcurso de una semana, este archivo se volvió lo suficientemente viejo y fue descartado. Una vez descartado ese archivo, sus metadatos desaparecieron, y así fue el problema.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X