3 votes

Comment ajouter des métadonnées aux archives de logs, pour que `log show --last` fonctionne ?

Chaque fois que je lance le log show à partir de la ligne de commande, j'obtiens un message d'avertissement, log: warning: The log archive contains partial or missing metadata .

Cela semble m'empêcher d'utiliser le --last pour limiter la sortie à l'intervalle de temps le plus récent. L'échec log renvoie un statut de sortie de 65 ans.

% 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

Ce que je veux, c'est quelque chose de similaire à ce que j'obtiens lorsque j'utilise la fonction --start avec un horodatage dans un passé récent. La commande réussie renvoie un état de sortie 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

Comment faire pour que l'archive du journal contienne suffisamment de métadonnées pour que log show --last 2s fonctionne comme je le souhaite ?

Ce problème est observé sur MacOS High Sierra 10.13.6. Mon compte dispose d'un accès administrateur, ce que le log exige de renvoyer tout contenu. L'accès est démontré par le log --start commande réussie.

2voto

Lucia Points 922

J'ai une réponse très insatisfaisante à cette question : attendre 10 jours et espérer que le problème disparaisse de lui-même.

Cette approche a fonctionné pour moi :

% 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

Notez que le message, log: warning: The log archive contains partial or missing metadata n'apparaît plus, et le --last fonctionne désormais.

En enquêtant, je suis tombé sur cet essai très utile, Dans le journal de MacOS : logd et les fichiers qu'il gère par Howard Oakley. Cela m'a conduit aux répertoires /var/db/diagnostics/ y /var/db/uuidtext/ .

J'observe que les sous-répertoires /var/db/diagnostics/Persist/ y /var/db/diagnostics/Special/ contiennent de l'opacité .tracev3 les fichiers de données :

% 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 dit que le système MacOS journal Le système effectue une rotation de ces fichiers : il élimine progressivement le contenu ancien et inutile, puis supprime complètement les anciens fichiers. Les horodateurs le confirment. Notez que le plus ancien tracev3 dans Special/ ne date que de 10 jours. Des fichiers plus anciens existaient dans ce répertoire lorsque j'ai eu le problème à l'origine, mais ils ont maintenant disparu.

Il est intéressant de noter que beaucoup (mais pas tous) de ces fichiers contiennent un fichier attribut de fichier étendu "com.apple.logd.metadata". Oakley, dans xattr : com.apple.logd.metadata, métadonnées de journal Le message d'erreur indique que "leur contenu et leur fonction sont inconnus". Je suppose que le terme "metadata" dans le message d'erreur pourrait être une référence aux données de la xattr "com.apple.logd.metadata".

Donc, je suppose qu'un fichier dans /var/db/diagnostics/Special/ avait un xattr "com.apple.logd.metadata" corrompu ou manquant. En l'espace d'une semaine, ce fichier est devenu suffisamment ancien et a été mis au rebut. Une fois ce fichier supprimé, ses métadonnées ont disparu, d'où le problème.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X