Точность в миллисекундах в syslogd на OS X

869
Justin Makeig

Когда я записываю сообщения в системный журнал в OS X (10.10.1), он усекает метку времени до второго. Например, если я регистрируюсь в файле, я могу записывать миллисекунды. Миллисекунды имеют значение, когда бревна идут быстро и яростно. Любая идея, если есть способ установить точность в миллисекундах в реализации OS X syslogd?

1
Вы читали справочную страницу `syslog (1)`? Это приводит примеры того, как это сделать. Spiff 9 лет назад 0
Да и `syslogd`. Я не вижу там ничего о точности меток времени. Есть ли конкретный раздел, на который вы могли бы указать мне? Благодарю. Justin Makeig 9 лет назад 0
Извините, я был на мобильнике прошлой ночью и просто хотел быстро поставить вас на правильный путь. Полный ответ ниже. Spiff 9 лет назад 0

1 ответ на вопрос

0
Spiff

OS X syslogdхранит журналы событий в базе данных / хранилище Apple System Log (asl) с точностью до микросекунды по умолчанию и с точностью до наносекунды.

Однако, когда эти данные копируются в традиционные файлы плоских журналов, например /var/log/system.log, используется традиционный формат отметки времени до второй, потому что это то, что эти плоские файлы журналов всегда использовали.

Вы можете использовать syslogинструмент командной строки для запроса базы данных asl, и вы можете указать формат вывода с различными параметрами командной строки, включая -F. Например, чтобы вывести все данные из базы данных asl в стандартном формате файла журнала, но с точностью до микросекунды, сделайте следующее:

syslog -F std.6 

Обратите внимание, что если у вас есть процесс, который регистрирует так много сообщений в системном журнале так быстро, что метки времени в доли секунды имеют значение, вы можете также посмотреть asl.conf(5)страницу руководства, чтобы убедиться, что ваши параметры mps_limitи dup_delayпараметры установлены таким образом, что все ваши сообщения журнала фактически храниться в базе данных, а не быть удушенным или выброшенным.

Спасибо за тщательный ответ. Я создаю сервер системного журнала, который прослушивает сообщения системного журнала по UDP. Не похоже, что есть способ изменить точность отметки времени сообщений, проходящих через syslogd на клиенте OS X (то есть отправка сообщений на мой сервер в восходящем направлении). asl выглядит так, как будто у него больше опций конфигурации, но я не совсем понимаю взаимосвязь между syslog и asl и не вижу ничего относительно точности времени в asl. Justin Makeig 9 лет назад 0
@JustinMakeig Традиционный сетевой протокол системного журнала (с помощью которого хосты могут отправлять сообщения системного журнала через UDP на центральный сервер системного журнала), который был создан десятилетия назад в одном из самых ранних Unix-систем BSD, имеет поле отметки времени, которое имеет точность с точностью до секунды. , Этот протокол в конечном итоге был задокументирован в Information RFC 3164. Это протокол системного журнала, поддерживаемый OS X. В 2009 году в IETF была предпринята попытка создать модернизированную версию протокола системного журнала (включая большую точность меток времени) и стандартизировать его (RFC 5424), но я не верю, что системный журнал OS X поддерживает современную версию. Spiff 9 лет назад 0
Да, а в RFC 3164 указано «Ммм дд чч: мм: сс». Похоже, мне не повезло. Большое спасибо за Вашу помощь. Justin Makeig 9 лет назад 0