Я устанавливаю пользовательский пакет /opt/package_name
, сохраняю файлы конфигурации /etc/opt/package_name
и статические файлы /var/opt/package_name/static/
- все в соответствии с соглашениями, предложенными FHS. [ 1 ] [ 2 ] [ 3 ]
Мне также нужно хранить несколько лог-файлов. Я хочу, чтобы их можно было обнаружить с помощью инструментов анализа, поэтому они также должны находиться в обычном месте. Должны ли они войти в:
/var/log/package_name
(как системный пакет, даже если это пользовательский пакет)/var/opt/package_name/log
(следуя/var/opt
соглашению - но это обнаруживаемый?)- что-то другое?
Ответы:
Я бы поместил их в
/var/log/package_name
; это удовлетворяет принципу наименьшего удивления лучше, чем/var/opt/package_name/log
. У меня нет на это цитаты; это просто соответствует тому, где я буду искать журналы.Я мог бы также отказаться от написания своих собственных файлов журнала и вместо этого входить в систему
syslog
с помощью соответствующего тега и средства; если я ищу чистую интеграцию с устоявшимися инструментами анализа, я не верю, что смогу добиться большего успеха для канала связи:syslog
.logrotate
чтобы сказать мне отпустить файл и открыть новый. Мне даже не нужно рассказыватьlogrotate
о новых файлах для поворота!rsyslog
будут использоваться в случае необходимости, поэтому мне не нужно задумываться о реализации этой функции самостоятельно.Если я не использую какой-либо специальный двоичный формат для своего журнала, и даже тогда я предпочитаю удобные для syslog текстовые форматы, разбираемые машиной, такие как JSON. Мне трудно оправдать свои собственные отдельные файлы журнала; инструменты анализа уже смотрят
syslog
как ястреб.источник
Следуя правилам FHS для файлов конфигурации вашего пакета, вы должны соблюдать согласованность и хранить файлы журналов в
/var/opt/package_name/log
.FHS заявляет:
а также заявляет
Наличие файлов журналов
/var/opt
не мешает правильной работе пакета, поэтому использование/var/log
вместо этого явно нарушает стандарт.Неясно, что вы подразумеваете под "это обнаруживается?" поскольку ваши пользовательские журналы, скорее всего, будут обрабатываться пользовательскими инструментами в любом случае, но при условии, что для их обработки предназначен универсальный инструмент, он должен изучить стандартное расположение таких пакетов, как ваш.
Обратите внимание, что
syslog
это полезное средство для централизации и настройки конфигурации журналирования, но не полностью решает вопрос о том, где хранить журналы, когда вы должны делать это в простых файлах с хорошо известным путем. Некоторые файлы, которые иногда хранятся в каталоге журналов приложений, предназначены для обеспечения доступности по ожидаемому пути самим приложением или связанными программами, например файлом, хранящим идентификатор процесса, поэтомуsyslog
они не будут работать для них.источник