Par dĂ©faut lâaffichage de journalctl est difficilement exploitable par un script, cependant journalctl propose plusieurs façons dâobtenir une sortie au format JSON.
Le paramĂštre -o
ou --output=
permet de contrÎler le formatage des entrées de journal qui sont montrés.
Attention, ce paramĂštre ne sâapplique que lorsque la commande journalctl est utilisĂ©e pour afficher tout ou partie du journal.
les options possibles pour « -o », « --output= »
Option | Description |
---|---|
short | Câest la valeur par dĂ©faut et gĂ©nĂšre une sortie principalement identique au formatage des fichiers syslog classiques, montrant une ligne par entrĂ©e de journal. |
short-full | TrĂšs proche de short , elle affiche les horodatages au format acceptĂ© par les options --since= et --until= . Contrairement aux informations dâhorodatage affichĂ©es en mode de sortie court, ce mode inclut des informations sur le jour de la semaine, lâannĂ©e et le fuseau horaire dans la sortie et est indĂ©pendant des paramĂštres rĂ©gionaux. |
short-iso | TrĂšs proche de short , elle affiche les horodatages d'horloge au format ISO 8601. |
short-iso-precise | comme pour short-iso mais inclut une précision à la microseconde. |
short-precise | TrÚs similaire, mais affiche les horodatages syslog classiques avec une précision totale de la microseconde. |
short-monotonic | TrĂšs similaire, mais affiche des horodatages monotones au lieu dâhorodatages dâhorloge murale. |
short-delta | comme pour monotone court mais inclut la diffĂ©rence de temps avec lâentrĂ©e prĂ©cĂ©dente. Peut-ĂȘtre que les diffĂ©rences de temps non fiables sont marquĂ©es par un * . |
short-unix | TrĂšs similaire, mais affiche les secondes Ă©coulĂ©es depuis le 1er janvier 1970 UTC au lieu des horodatages dâhorloge (heure UNIX). Lâheure est affichĂ©e avec une prĂ©cision de lâordre de la microseconde. |
verbose | Affiche les Ă©lĂ©ments dâentrĂ©e entiĂšrement structurĂ©s avec tous les champs. |
export | SĂ©rialise le journal en un flux binaire (mais principalement basĂ© sur du texte) adaptĂ© aux sauvegardes et au transfert rĂ©seau (voir Journal Export Format [2] pour plus dâinformations). Pour rĂ©importer le flux binaire au format journald natif, utilisez systemd-journal-remote(8). |
json | Formate les entrĂ©es en tant qu'objets JSON, sĂ©parĂ©s par des caractĂšres de retour Ă la ligne (voir Journal JSON Format[3] pour plus dâinformations). |
json-pretty | Formate les entrées en tant que structures de données JSON, mais les formate sur plusieurs lignes afin de les rendre plus lisibles par les humains. |
json-sse | Formate les entrées en tant que structures de données JSON, mais les enveloppe dans un format adapté aux événements envoyés par le serveur[4]. |
json-seq | Formate les entrées en tant que structures de données JSON, mais les préfixe avec un caractÚre « ASCII Record Separator » (0x1E) et les suffixe avec un caractÚre ASCII Line Feed (0x0A), conformément aux séquences de texte JavaScript Object Notation (JSON)[5](application/ json-seq ). |
cat | GĂ©nĂšre une sortie trĂšs concise, ne montrant que le message rĂ©el de chaque entrĂ©e de journal sans mĂ©tadonnĂ©es, pas mĂȘme un horodatage. Si elle est combinĂ©e avec lâoption --output-fields= , les champs rĂ©pertoriĂ©s seront affichĂ©s pour chaque enregistrement de journal, au lieu du message. |
with-unit | Similaire Ă short-full, mais prĂ©fixe les noms dâunitĂ© et dâunitĂ© utilisateur au lieu de lâidentifiant syslog traditionnel. Utile lors de lâutilisation dâinstances basĂ©es sur un modĂšle, car il inclura les arguments dans les noms dâunitĂ©. |
Le cas des sorties au format JSON.
Les valeurs de champ sont généralement encodées sous forme de chaßnes JSON, à trois exceptions prÚs :
- Les champs supĂ©rieurs Ă 4096 octets sont codĂ©s comme des valeurs nulles. (Cela peut ĂȘtre dĂ©sactivĂ© en passant
--all
, mais sachez que cela peut allouer des objets JSON trop longs pour ĂȘtre par la suite traitĂ©.) - Les entrĂ©es de journal autorisent des champs non uniques dans la mĂȘme entrĂ©e de journal. JSON nâautorise pas les champs non uniques dans les objets. Pour cette raison, si un champ non unique est rencontrĂ©, un tableau JSON est utilisĂ© comme valeur de champ, rĂ©pertoriant toutes les valeurs de champ en tant quâĂ©lĂ©ments.
- Les champs contenant des octets non imprimables ou non UTF8 sont encodés sous forme de tableaux contenant les octets bruts formatés individuellement en tant que nombres non signés.
Notez que cet encodage est rĂ©versible (Ă lâexception de la limite de taille).
Exemples
Nous ne traiterons que des deux sorties JSON de base, considĂ©rant que si vous avez besoin des autres formats câest que vos compĂ©tences dĂ©passent le cadre de ce billet.
Les deux formats JSON qui nous intéressent sont donc :
journalctl -o json âŠ
Et la version plus lisible par un humain :
journalctl -o json-pretty âŠ
Qui correspond aux couleurs prĂšs Ă Â :
journalctl -o json ⊠| jq '.'
journalctl --no-pager -o json --since=yesterday
journalctl --no-pager -o json -p emerg..err
journalctl --no-pager -o json -p emerg..err --boot
journalctl --no-pager -o json -ex
journalctl --no-pager -o json UNIT=systemd-logind.service
journalctl --no-pager -o json UNIT=cron.service
Liens
኿