Вопрос или проблема
Я не могу найти документацию о лучших практиках логирования в macOS.
Судя по тому, что я обнаружил, просматривая файловую систему, системные логи хранятся в /Library/Logs
, а логи пользовательских приложений в ~/Library/Logs
.
Я создал каталог в последнем для своих демонов (LaunchAgents
), но они не отображаются в консоли, им нужно находиться в базовом каталоге. Однако я вижу логи других приложений, используемые в подкаталогах.
Что я упускаю? Я читал о унифицированном логировании и утилите logger
, но это не то, что мне нужно. Я просто хочу, чтобы текстовые файлы, которые я создаю, отображались в консоли.
.
Ответ или решение
Для решения проблемы, связанной с отображением логов, созданных в подкаталоге ~/Library/Logs/
, в консоли macOS, важно учитывать несколько аспектов конфигурации и архитектуры системы.
Определение проблемы
На macOS, существует две основные директории для хранения лог-файлов:
- Системные логи: Хранятся в
/Library/Logs
. - Логи пользовательских приложений: Хранятся в
~/Library/Logs
.
Вы создали подкаталог в ~/Library/Logs
для логов ваших демонов, запускаемых через LaunchAgents
, но они не отображаются в приложении "Консоль" (Console). Напротив, другие приложения могут отображать свои логи, хранящиеся в подкаталогах.
Unified Logging и как это влияет
С появления Unified Logging в macOS, структурированных логов, возможность хранения и чтения логов изменилась. Системное приложение "Консоль" использует механизм Unified Logging, чтобы отображать журналы и анализировать их. Текстовые файлы лога, помещенные в ~/Library/Logs
, не отображаются в "Консоли" напрямую, если они не зарегистрированы в системе через соответствующие механизмы.
Рекомендации для отображения логов
Чтобы ваши текстовые лог-файлы отображались в приложении "Консоль", выполните следующие рекомендации:
-
Используйте соответствующие права доступа: Убедитесь, что ваш лог-файл и его директория имеют правильные права доступа и владельца. Они должны быть такими, чтобы сама система могла их читать.
-
Обозначение логов в системе: Если возможно, настройте ваш демон или приложение так, чтобы оно использовало Unified Logging для регистрации записей. Это самый надежный способ обеспечить видимость в "Консоли". Для этого рекомендуется изучить использование
os_log
API. -
Создание символьных ссылок: Иногда возможно создание символических ссылок из вашего подкаталога в главный каталог, но в общем случае macOS ожидает, что приложения будут следовать унифицированным протоколам ведения логов.
-
Проверка конфигурации системы и демонов: Убедитесь, что ваш демон не перезаписывает пути логов или конфигурацию, делая их недоступными.
Комбинируя приведение ваших логов в соответствие с системными требованиями и внедрение современного подхода к ведению логов через Unified Logging, вы сможете достичь их видимости в "Консоли".
Заключение
Ваша задача решается оптимизацией ведения логов в соответствии с архитектурным дизайном macOS. Внедрение перезаписываемых системных методов, таких как Unified Logging, позволит улучшить видимость и управляемость логов. Учитывайте, что возможность отладки и мониторинга приложений в macOS тесно связана с соблюдением современных стандартов логирования.