Re: "Правильные" демоны - не демоны?
Hello!
On Friday 28 August 2009 14:07:02 Alexander Galanin wrote:
> rsyslog, к примеру (никто ведь не заставляет использовать только одну из
> многочисленных инкарнаций syslogd), умеет составлять имя файла из
> полей сообщения. Вот неизменённый кусок из документации, который, я
> надеюсь, ты осилишь допилить до нужного тебе:
>
> $template DynFile,"/var/log/%HOSTNAME%/%programname%.log"
Пример процесса:
/usr/sbin/aolserver4-nsd -i -u www-data -g www-data -b 127.0.0.1:8NNN -s main
-t /var/www/offlineNNN/etc/aolserver4.tcl
Этот процесс клонируется сколько-то раз (в том числе, каждый
разработчик может для себя один или более экземпляров запустить), при этом
меняется число NNN. Каждый процесс посылает сообщения разного уровня в
сислог (ошибки, информация, предупреждения, плюс еще нужно разделить
сообщения по имени модуля регекспами). Логи должны писаться с правами
пользователя, который запустил клон и желательно в ~/log/.... Положим,
NNN можно передать в самих сообщениях, rsyslog в этом случае логи разделит.
Но пользователя получить не удастся, такая информация в syslog не передается.
И как изменить права на эти лог-файлы? Есть ли какая-то утилита, которая
умеет с stdout брать лог и пересылать в syslog - чтобы объединять сообщения
в единый лог-файл?
Запуск и логирование через runit решает все описанные выше задачи, чем он
мне и понравился (в том числе можно разрешить пользователям от их имени
управлять своими сервисами, даже sudo не давая). Правила запуска и
логирования для runit - отдельные скрипты для каждого сервиса, так что
клонировать просто. Имхо на стандартном init/syslog подобное нереализуемо.
Вот для каких-то глобальных вещей, например, сбора access log всех серверов,
rsyslog удобен, раз настроил и работает. А для множества динамически
создаваемых и конфигурируемых сервисов syslog вообще никак не пригоден.
Best regards, Alexey Pechnikov.
http://pechnikov.tel/
Reply to: