Как передать сообщения 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.