[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: