Чтение вывода системного журнала на Mac

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

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

syslog (LOG_WARNING, "Log message");

Есть идеи, где я могу найти свой журнал?


person Community    schedule 19.12.2008    source источник


Ответы (7)


/var/log/system.log

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

См. Также «регистратор» (man logger) и «системный журнал» (man syslog).

person maerics    schedule 24.01.2013
comment
Кажется, нет /var/log/system.log в более новых версиях macOS. Я могу видеть их только с помощью Console.app - person Jorge Orpinel Pérez; 11.06.2018
comment
В более новых версиях macOS вы найдете системный журнал по адресу /private/var/log/system.log. - person neilco; 09.10.2019

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

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

введите описание изображения здесь

person Matthew Schinckel    schedule 19.12.2008
comment
Гм, Console.app автоматически показывает system.log и другие файлы журналов. - person Matthew Schinckel; 28.01.2013
comment
Что такое Парди ?? - person Pacerier; 28.08.2017
comment
@Pacerier Я считаю, что в данном случае слово purdy должно быть юмористическим произношением слова «красивый». - person The Rover; 06.10.2017

В случае сомнений всегда есть man syslog.

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

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

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

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

person Charlie Martin    schedule 19.12.2008
comment
Разве для этого не требуется sudo? - person Matthieu Riegler; 11.01.2013
comment
Не на Mac. Это не похоже на то, что сообщение о панике на самом деле вызывает панику: Последний вход в систему: понедельник, 14 января, 22:41:57 на консоли 499 $ syslog -s -l P Прощай, жестокое мировое широковещательное сообщение от [email protected] (без tty) в 23: 57 MST ... Прощай, жестокий мир - person Charlie Martin; 15.01.2013
comment
Я обнаружил, что не вижу сообщений в консоли или в /var/log/system.log, если я не использую sudo или не указываю WARN или выше. - person NeilG; 10.07.2019

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

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

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

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

person Mecki    schedule 19.10.2017

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

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

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

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

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

person Peter Hosey    schedule 03.01.2010

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

person ayaz    schedule 19.12.2008

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

person Peter Hosey    schedule 03.01.2010