Как передать сообщения printf приложения в /var/log/messages

Я хочу передать сообщения журнала printf приложения в / var / log / messages. Поскольку сообщения отладки ядра могут быть видны в /var/log/messages. Но я не понимаю, как передать сообщения журнала printf приложения в / var / log / messages. Может кто-нибудь, пожалуйста, предложите мне, как это сделать.

1 ответ

Измените, например:

printf("The error was %s\n", strerror(errno));

чтобы:

syslog(LOG_ERR, "The error was %s", strerror(errno));

Обратите внимание, что системный журнал всегда отправляет полную строку за раз (и нет необходимости \n).

Для большего контроля над параметрами ведения журнала используйте openlog() функционировать перед любыми вызовами syslog(), Смотрите man-страницу openlog для более подробной информации.

Системный журнал направляет сообщения на основе приоритета сообщения - первый аргумент syslog (например LOG_ERR в приведенном выше примере) - и объект. Объект либо установить в вызове openlog() или по умолчанию LOG_USER, Основной синтаксис файла конфигурации системного журнала - это строки вида:

selector[;selector]     destination

где селектор:

facility[,facility].priority

(объект и / или приоритет может быть подстановочным знаком *). Приоритет неявно включает в себя все более высокие приоритеты.

Местом назначения может быть файл, удаленный хост, программа или (список) пользователей. Некоторые примеры:

*.*                   ihateyou             -- every message sent to this user
*.debug               *                    -- to every logged in user!
*.emerg               root,bob,tom         -- emergencies to these three
*.err                 /var/log/all-errors  -- all LOG_ERR and above to this file
cron.info             |/some/program       -- pipe these to /some/program
user.*                @some.host.com       -- send these to this host
cron,user.crit        /this/file           -- an example with multiple facilities
lpr.err;ftp.warn      /other/file          -- an example with multiple selectors

Могут быть некоторые дополнительные параметры (например, "none" в качестве приоритета, конкретный приоритет вроде =warn, и отрицание как!= Warn), смотрите подробности на вашей справочной странице syslog.conf.

Обратитесь к вашему файлу конфигурации системного журнала (обычно /etc/syslog.conf), чтобы узнать, как ваша система направляет свои сообщения системного журнала. Примечание: некоторые системы используют такой вариант системного журнала, как nsyslog или же rsyslog - у них больше опций и, следовательно, потенциально более сложный файл конфигурации.

Известные возможности: LOG_AUTH, LOG_AUTHPRIV, LOG_CRON, LOG_DAEMON, LOG_FTP, LOG_KERN, LOCAL_LOCAL0 .. LOG_LOCAL7, LOG_LPR, LOG_MAIL, LOG_NEWS, LOG_SYSLOG, LOG_USER, LOG_UUCP. (LOG_KERN недоступен для пользовательских процессов) Как правило, один из LOG_DAEMON, LOG_LOCALn или LOG_USER обычно является лучшим выбором.

Известные приоритеты (также называемые уровнями серьезности): (от высшего к низшему): LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG.

Другие вопросы по тегам