6 votes

Comment utiliser `log stream` pour rechercher des chaînes dans TOUS les journaux existants sur MacOS ?

J'ai besoin de rechercher une "chaîne" dans tous les journaux de MacOS Mojave. On m'a dit que la façon de le faire était d'exécuter :

sudo log stream --source --start'1999-99-99 23:59' | egrep -i "some regex string"

Cependant, cela ne fait pas l'affaire. Quelle est la meilleure façon de procéder ?

4voto

slm Points 4018

Aucun soutien pour --start

Les guides d'utilisation pour log stream ne donnent aucune indication qu'un --start l'argument est soutenu, je me demande s'ils parlaient de log show à la place.

Utilisation des flux de données

$ log stream --source --start
log: unrecognized option `--start'
usage: log stream [options]
   or: log stream [options] --process <pid> | <process>

description:
    Stream events from the system or a given process.

options:
    --color <mode>                  Control color output (valid: auto, always, none)
    --level default | info | debug  Include events at, and below, the given level
    --predicate <predicate>         Filter events using the given predicate
    --process <pid> | <process>     Stream events from the specified process
    --source                        Annotate output with source file and line-number
    --style <style>                 Output format (valid: syslog, json, compact)
    --timeout <num>[m|h|d]          Terminate streaming after timeout has elapsed
    --type activity | log | trace   Limit streaming to a given event type
    --mach-continuous-time          Print mach continuous time timestamps rather than walltime

predicate usage:
    Filter predicates follow the NSPredicate format described at:
    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Predicates/AdditionalChapters/Introduction.html

    For predicate field/type details, see `log help predicates`.

Utilisation de log show

log show a un --start que vous pouvez utiliser comme suit :

$ log show --source --start '2019-01-01' | egrep -i "some regex string"

NOTE : Cette commande peut s'avérer très coûteuse à exécuter, car elle va parcourir tous les journaux de votre système à partir de cette commande --start mais renverra toutes les correspondances à vos egrep .

Journaux de streaming

L'utilisation de log show s'arrêtera lorsqu'il rencontrera la fin des journaux. Si vous voulez vraiment analyser/filtrer le flux de journaux au fur et à mesure qu'ils se produisent, vous devez utiliser la méthode suivante log stream comme ça :

$ log stream --source | grep -iE "some regex string"

-ou-

$ log stream --source --predicate 'processImagePath contains "some bit of text"'

Références

0voto

Pierz Points 2729

Vous pouvez aussi simplement utiliser zgrep de manière récursive ( -R ) chercher dans le répertoire des journaux ( /var/log ), bien qu'il ne gère pas le système d'Apple asl format si agréable, par exemple

zgrep -R that_thing /var/log

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