Чтение вывода системного журнала на Mac - PullRequest
48 голосов
/ 19 декабря 2008

У меня есть программа, написанная для linux, и я пытаюсь собрать и запустить ее на своем компьютере MacOS 10.5. Программа собирается и запускается без проблем, однако она делает много обращений к системному журналу. Я знаю, что на моем Mac запущен syslogd, но я не могу найти, куда выводятся мои вызовы syslog.

Вызовы системного журнала имеют вид

syslog (LOG_WARNING, "Log message");

Любая идея, где я мог бы найти свой вывод журнала?

Ответы [ 7 ]

58 голосов
/ 24 января 2013

/var/log/system.log

Вы можете легко контролировать его, используя tail -f /var/log/system.log

Смотрите также "logger" (man logger) и "syslog" (man syslog).

47 голосов
/ 19 декабря 2008

Вам, вероятно, следует использовать Console.app для просмотра файлов журналов. Это кисло.

Выберите ваше устройство слева и фильтруйте сообщения справа:

enter image description here

12 голосов
/ 19 декабря 2008

Если есть сомнения, всегда есть man syslog.

Вы можете найти свои сообщения в /var/log/syslog; Моя машина настроена из коробки, чтобы включать только высокоуровневые сообщения, поэтому вам, возможно, понадобятся ваши настройки.

Вы также можете прочитать сообщения через syslog (1) или создать тестовое сообщение с помощью команды, подобной

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

используйте серьезность P ("паника"), и вы сразу получите захватывающее сообщение на своей консоли.

8 голосов
/ 19 октября 2017

Может быть, интересно отметить: в прошлом Apple использовала настоящий syslogd, но между тем все это переключилось на ASL (Apple System Log). Команда syslog все еще доступна, но она получит доступ только к одному журналу. Если вы хотите получить доступ ко всем сообщениям журнала ASL во всех настроенных файлах журнала, используйте команду log.

например. ниже показаны все сообщения журнала, созданные Safari за последние два дня (наберитесь терпения, это может занять некоторое время):

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

См. man log для всех действий, которые вы можете выполнить, все параметры, которые он знает, и какие атрибуты вы можете фильтровать.

6 голосов
/ 03 января 2010

Mac OS X реализует расширенный набор функций системного журнала . Весь системный журнал есть, но как часть ASL.

Консоль, упомянутая Мэтью Шинкелем в его ответе, является GUI на ASL. Он покажет вам любые сообщения, которые существуют в базе данных, в соответствии с запросами, перечисленными на боковой панели. Есть два запроса по умолчанию; один показывает только сообщения, отправленные с помощью консоли (как используется NSLog, между прочим), тогда как другой показывает все сообщения журнала. Проверьте запрос всех сообщений; вы, вероятно, найдете там свое сообщение.

Это «все» идет со звездочкой. Если вы посмотрите в /etc/asl.conf, вы увидите следующую строку:

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

К счастью, в вашем случае сообщение пройдет эту проверку, поскольку предупреждение превышает (меньше, чем) уведомление.

1 голос
/ 19 декабря 2008

Основываясь на ответе Чарли, я хотел бы добавить, что вы должны взглянуть на справочную страницу syslog.conf(5), а также взглянуть на файл /etc/syslog.conf (где конфигурация системного журнала определяется по умолчанию, а также На мой взгляд, на OS X 10.5.x).

0 голосов
/ 03 января 2010

Проверьте наличие звонка на openlog где-нибудь в программе. После вызова openlog, syslog сохранит свои выходные данные в этот файл журнала вместо расположения по умолчанию.

...