LINUX.ORG.RU

Протоколирование работы самописного ПО

 ,


0

3

Здравствуйте Понадобилась помощь после 2 часов гугления.

Не могу понять как правильнее делать следующие вещи:

1. Как правильно разместить свой конфиг файл в /etc/ ?

2. Как правильно писать лог /var/log/ ?

В гугле все ссылаются на syslog. Но мне не нужно писать в системный журнал /var/log/messages и тп. Мне нужен свой.

Пишу маленькую программку в целях повышения своей грамотности линукса.

Спасибо за помощь!

Положи свой конфиг в /etc, положи текстовик в /var/log и пиши туда лог? :) Ну и, конечно, твоя программа должна иметь полномочия писать в лог и читать конфиг.

NeverLoved ★★★★★ ()
Последнее исправление: NeverLoved (всего исправлений: 1)

Как правильно разместить свой конфиг файл в /etc/ ?

touch /etc/yourconfig
chmod NUJNIE:PRAVA /etc/yourconfig

Как правильно писать лог /var/log/ ?

так же как и в любые файлы в любом другом каталоге

В гугле все ссылаются на syslog.

Есть системный демон логирования. Хочешь - используй его. Не хочешь - не используй. Тут личное дело каждого.

Но мне не нужно писать в системный журнал /var/log/messages и тп. Мне нужен свой.

открываешь файл и пишешь, в чем проблема? тебя ткнуть пальцем как файлы открывать на твоём ЯП?

reprimand ★★★★★ ()

Как правильно разместить свой конфиг файл в /etc/ ?

Это тебе надо читать FHS http://www.pathname.com/fhs/ судя по существующим файлам, правда, единого стандарта похоже нет, поэтому в зависимости от своей программы называешь его prognamerc (если это шелл) или например progname.conf, а если нужно много конфигов, то создаёшь директорию, как ssh,

Как правильно писать лог /var/log/ ?

Посылать сообщения демону, ведущему логи, полагаю. А в его настройках уже задавать, в какой логфайл им идти. Тут читай доки на syslog и/или на journalctl (мне systemd не нравится, но на данный момент он весьма распространён)

Xenius ★★★★★ ()

по своему опыту с эрливидео могу сказать, что проблема не в том, куда писать, а проблема в том, что часть логов нужна тебе для отладки, часть логов нужна эксплуатирующему администратору для эксплуатации.

Писать их раздельно неудобно, потому что потом их надо как-то склеивать, писать их вместе неудобно, потому что админ не понимает, чего за стектрейсы ему показывают.

max_lapshin ★★★ ()
Ответ на: комментарий от max_lapshin

Писать их раздельно неудобно, потому что потом их надо как-то склеивать писать их вместе неудобно, потому что админ не понимает, чего за стектрейсы ему показывают.

Ну... твоя программа пишет два лога - в один валится info, в другой валится info + debug. Ну или ты таки делаешь полноценные трассировки и выделяешь их в отдельную подсистему, что обычно является более правильным решением.

kirk_johnson ★☆ ()
Ответ на: комментарий от kirk_johnson

Обычно error считается приоритетом выше info, но в error интересен как раз стектрейс.

Т.е. приходится скорее вести лог для админа, в котором структурированные info сообщения и лог для девелоперов, в котором менее структурированные, но более развернутые сообщения.

max_lapshin ★★★ ()

а зачем именно в системный лог писать ? пиши в домашнем каталоге и конфиги в .config

x905 ★★★★★ ()
Ответ на: комментарий от max_lapshin

Стектрейсы и прочее должны выводится с каким-нибудь уровнем debug, у которого приоритет должен быть ниже info

Gvidon ★★★★ ()

что понимается под самописным по?

anonymous ()
Ответ на: комментарий от x905

Это демон. Мне не нужно как поступить проще, мне нужно как првильно.

Cr3a70r ()
Ответ на: комментарий от Xenius

За FHS спасибо, уверен, что найду в ней для себя много нового.

Cr3a70r ()
Ответ на: комментарий от reprimand

Обязательно нужно пальцем ткнуть. Ведь мой вопрос был о том, что мне нужен от тебя рабочий код под мою задачу.

По поводу touch /etc/yourconfig - не хватает прав читать этот файл, если не из под рута запущен. Да, права настроил, да чмодил. Не понимаю почему демон не хочет читать этот файл и не может писать в /var/log. Возмонжо selinux.

Cr3a70r ()

В гугле все ссылаются на syslog. Но мне не нужно писать в системный журнал /var/log/messages и тп. Мне нужен свой.

если уж ты не смог прочитать, что такое сислог - открой хотя бы /etc/rsyslog.conf и посмотри, как там сконфигурены файлы, в которые пишутся логи приложений

anonymous ()

Здравствуйте Понадобилась помощь после 2 часов гугления.

Наколеночный логир без блэкджека и шлюх пишется за 15 минут. Готовый СБИШ (включая поддержку syslog искаропки) пристегивается еще быстрее. Писать свой логир и парсер конфига не имеет смысла иначе как только в образовательных целях, т.к. эти задачи решены уже многократно до тебя, а в примитивном варианте... примитивны.

slackwarrior ★★★★★ ()

Но мне не нужно писать в системный журнал /var/log/messages и тп. Мне нужен свой

Обычно это решает не тот кто пишет, а тот кто использует. Syslog можно настроить, чтобы он складывал логи твоего поделия отдельно. Но вообще, если ты для себя пишешь то просто кидай, пока, всё куда вздумается, только не забудь выключить буферизацию.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Спасибо за наводку, уже почитал. Видимо подобного совета я и ждал.

Cr3a70r ()
Ответ на: комментарий от slackwarrior

Естественно я не пишу самописный парсер и логгер, не вижу смысла идти по пройденному пути, тем более что мой парсер и логгер уж точно не были бы лучше чем те, что уже есть.

Меня смутил тот факт, что у каждого приложения свой лог файл в /var/log/, а в инете пишут только об сислоге.

Cr3a70r ()
Ответ на: комментарий от Gvidon

у нас тут некачественного софта тред, тут так нельзя.

t184256 ★★★★★ ()
Ответ на: комментарий от Cr3a70r

потому что самописного. можно прятать stacktrace от админа, если ты — какой-нибудь apache и любая твоя ошибка гуглится по первым двум словам вместе с разжеванным в порошок решением. для безвестной самопальной приблуды это — преступление против админа.

t184256 ★★★★★ ()
Ответ на: комментарий от Gvidon

вот да. это нормальное и стандартное решение. все сообщения всегда делятся по уровням и админ сам себе настраивает, что и куда складывать. уровень debug используется для отладки, в работе нафиг не нужен, но если вдруг что случится в поле - можно его включать для разбора полётов. а по умолчанию в лог валятся только ошибки.

Iron_Bug ★★★★ ()
Ответ на: комментарий от Cr3a70r

каждого приложения свой лог файл в /var/log/

Как настроишь же, или как желает левая пятка мантейнеров дистра искаропки же :) В сислог при желании можно заворачивать и выхлоп прог, для того явно не предназначенных. А можно — не заворачивать.

slackwarrior ★★★★★ ()

man openlog
man syslog
man rsyslog.conf
man logrotate.conf

У меня кусок кода, отвечающий за вывод лога в консоль или в системный лог выглядит так

#include <syslog.h>

...

#ifdef MY_SYS_LOG
    openlog("default", LOG_PID, LOG_LOCAL0);
    syslog(level, "%s", message);
#else
    cerr << message << endl;
#endif //MY_SYS_LOG

В файл /etc/rsyslog.conf добавить строку

local0.*    /var/log/имя_файла
и перезапустить rsyslogd
Кроме того, чтобы твой логфайл не забил собой весь диск, надо настроить ротацию лога.

alexku ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.