web-dev-qa-db-fra.com

Lecture de la sortie syslog sur un Mac

J'ai un programme qui a été écrit pour Linux et j'essaie de le construire et de l'exécuter sur ma machine MacOS 10.5. Le programme se construit et s'exécute sans problème, mais il fait de nombreux appels à syslog. Je sais que syslogd s'exécute sur mon mac, mais je n'arrive pas à trouver où mes appels syslog sont sortis.

Les appels syslog sont de la forme

syslog (LOG_WARNING, "Log message");

Une idée où je pourrais trouver ma sortie de journal?

50
arigreen

/var/log/system.log

Vous pouvez le surveiller facilement en utilisant tail -f /var/log/system.log

Voir aussi le "logger" (man logger) et "syslog" (man syslog).

59
maerics

Vous devriez probablement utiliser Console.app pour afficher les fichiers journaux. C'est purdy.

Sélectionnez votre appareil à gauche et filtrez les messages à droite:

enter image description here

47
Matthew Schinckel

En cas de doute, il y a toujours man syslog.

Vous pouvez trouver vos messages dans /var/log/syslog; ma machine est configurée prête à l'emploi pour n'inclure que les messages de haut niveau, vous devrez donc peut-être avoir vos paramètres.

Vous pouvez également lire les messages via syslog (1), ou créer un message de test avec une commande comme

$ syslog -s -l INFO "Hello, world."

utilisez une sévérité de P ("panique") et vous obtiendrez immédiatement un message passionnant sur votre console.

12
Charlie Martin

Peut-être intéressant de noter: Apple utilisait un vrai syslogd dans le passé, mais en attendant, tout cela est passé à ASL (Apple System Log). Le syslog La commande est toujours disponible, mais elle n'accédera qu'à ce journal. Si vous souhaitez accéder à tous les messages de journal d'ASL dans tous les fichiers journaux configurés, utilisez la commande log.

Par exemple. ce qui suit montre tous les messages de journal produits par Safari au cours des deux derniers jours (soyez patient, cela peut prendre un certain temps):

log show --predicate 'process == "Safari"' --last 2d

Voir man log pour toutes les actions que vous pouvez effectuer, tous les paramètres qu'il connaît et pour quels attributs vous pouvez filtrer.

8
Mecki

Mac OS X implémente n surensemble de fonctionnalités de syslog . Tout Syslog est là, mais dans le cadre d'ASL.

La console, mentionnée par Matthew Schinckel dans sa réponse, est l'interface graphique sur ASL. Il vous montrera tous les messages qui existent dans la base de données, récupérés par les requêtes répertoriées dans la barre latérale. Il y a deux requêtes par défaut; l'un affiche uniquement les messages envoyés avec la fonction Console (tels qu'utilisés par NSLog, entre autres), tandis que l'autre affiche tous les messages du journal . Vérifiez la requête tous les messages; vous y trouverez probablement votre message.

Ce "tout" vient avec un astérisque. Si vous regardez dans /etc/asl.conf, vous verrez cette ligne:

# save everything from emergency to notice
? [<= Level notice] store

Heureusement, dans votre cas, le message passera cette vérification, car l'avertissement dépasse (est un nombre inférieur à).

6
Peter Hosey

En m'appuyant sur la réponse de Charlie, je voudrais ajouter que vous devriez jeter un œil à la page de manuel de syslog.conf(5) et également jeter un œil au fichier /etc/syslog.conf (c'est là que la configuration syslog est définie par défaut et aussi, comme je le vois, sur OS X 10.5.x).

1
ayaz

Recherchez un appel à openlog quelque part dans le programme. Après un appel à openlog, syslog enregistrera sa sortie dans ce fichier journal au lieu de l'emplacement par défaut.

0
Peter Hosey