фонКак написать приложение C/C++, которое записывает в каталог/var/log/myapp?
В системах Linux, Application Logs существуют в подкаталогах /var/log
, которая принадлежит root/root
и имеет 755 разрешений на моей системе. Например, я вижу /var/log/mysql
и /var/log/samba
.
Вопрос
Если я хочу MyApp, чтобы иметь возможность написать в /var/log/myapp
, что является каноническим выполнения этого в C/C++?
Мысль
Должен ли я сделать что-то сумасшедшее, как setuid root
, если я не хочу sudo a_setup_script.sh
? Обратите внимание, что мне известно о процедурах syslog
, но они недостаточны для моих нужд (мне нужно записывать гораздо больше информации, разделяться на разные файлы, отсюда и необходимость в подкаталоге).
Нужно ли мне заглядывать в комбинацию упаковки Ubuntu (для настройки каталога) и прямого ввода файла IO в подкаталог (по myapp)?
Я хотел бы как можно больше соблюдать стандарты.
Добавление
Я забыл упомянуть, MyApp на самом деле демон, процессы (сервер, который слушает клиентов), так что не было бы так плохо, чтобы иметь myapp_user который на самом деле работает/запускает процесс.
ОТВЕТ
Для Ubuntu, лучшее решение, как представляется, rsyslog
, мощная, современная замена syslog
. Он будет генерировать файлы/каталоги по мере необходимости, он имеет встроенный язык для гибкой маршрутизации записей syslog
и использует простой старый syslog
API на уровне C/C++. Чтобы сохранить информацию о маршрутизации, вы можете определить свою собственную кодировку текстового сообщения в C/C++ в сочетании с надлежащим rsyslog.conf
для обработки декодирования.
Вы уверены, что можете использовать это с подкаталогами? внимательно прочитайте мой ОПТ - если я сброшу все мои вещи в '/ var/log/syslog', это сделает этот файл бесполезным (есть так много всего). – kfmfe04
@ kfmfe04 Да. Проверьте обновление.Вам нужно будет настроить syslog для отправки сообщений _your_ в файл _your_. Например: 'news.crit /var/log/news/news.crit news.err/var/log/news/news.err' – user2116939
@ kfmfe04 извините за несколько изменений. Комментарии немного болезненны. :( – user2116939