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?
/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
).
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.
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.
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 à).
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).
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.