>>>syslogd -> фильтрация по имени и вывод в fifo -> читалка читает из фифо
>все это здорово, но файл FIFO должен быть создан и открыт до
>запуска демона syslogd, а моя прога запускается когда захочу. Мне каждый
>раз перезапускать syslogd? Может есть еще какие-нибудь решения?
>Я уже думала, может по UDP самой себе слать сообщения, и не
>пользоваться syslog. Да зачем тут FIFO. Берешь CORBA (ACE, детище мистера Шмидта, http://www.cs.wustl.edu/~schmidt/ACE.html), строишь систему сбора логов от твоих программ. Из своей программы получаешь доступ к своему сервису сбора логов, и пишешь логи туда. А он там пусть отображает, что хочет.
Можно и по UDP рассылать, а сервер пусть получает и обрабатывает.
Можно писать в файл, например. Посмотри библиотеки log4cpp, к примеру. Только в этом случае твой сборщик мусора (пардон, логов), должен будет знать, сколько у тебя программ и в какие файлы они пишут логи.
А можно инфраструктуру на базе TCP/IP. Берешь, к примеру, тот же ACE, используешь асинхронные сокеты, и вперед.
Есть еще вариант, писать логи, скажем, в SQL server. Читать из базы можно, используя polling, а можно notification service заюзать. Если совсем будет нечего делать - Extended Stored Procedure напиши, которая будет вызываться по триггеру и рассылать нотификацию по UDP, скажем.
Если все вместе собрать, то получится так.
1) Берем log4cpp, добавляем туда свой appender, который будет писать логи в RDBMS.
2) Добавляем в RDBMS свою extended stored procedure, которая используя UDP будет сообщать об обновлениях данных.
3) Строим свой CORBA сервера, который будет получать нотификации из SQL сервера (по UDP), и обновлять данные о логах.
4) Пишем клиента для своего сервера, который будет уже по CORBA ходить на сервер за логами.
Ах да, забыл.. Очень важно настроить репликацию на SQL сервере, чтобы логи вдруг не потерялись (тиха Украинская ночь, но мало ли машина взорвется). Сервер, работающий с базой, тоже должен быть кластеризирован, причем multi master вполне подойдет.
В итоге есть у нас и MODEL, и controller, а view пиши как хочешь, вот тебе и QT, и GTK, и ncurses.
Все просто.