Страница 148 из 399
Например, демон может сделать следующий вызов, когда вызов функции rename неожиданно оказывается неудачным:
syslog(LOG_INFO|LOG_LOCAL2, "rename(%s, %s): %m", file1, file2);
Назначение аргументов facility и level в том, чтобы все сообщения, которые посылаются процессами определенного типа (то есть с одним значением аргумента facility), могли обрабатываться одинаково в файле /etc/syslog.conf или чтобы все сообщения одного уровня (с одинаковым значением аргумента level) обрабатывались одинаково. Например, файл конфигурации может содержать строки
kern.* /dev/console
local7.debug /var/log/cisco.log
для указания, что все сообщения ядра направляются на консоль, а сообщения относительно отладки со значением аргумента facility, равным local7, добавляются в файл /var/log/cisco.log.
Когда приложение впервые вызывает функцию syslog, она создает дейтаграммный доменный сокет Unix и затем вызывает функцию co
#include <syslog.h>
void openlog(const char *<i>ident</i>, int <i>options</i>, int <i>facility</i>);
void closelog(void);
Функция openlog может быть вызвана перед первым вызовом функции syslog, а функция closelog — когда приложение закончит отправлять сообщения в журнал.
Аргумент ident — это строка, которая будет добавлена в начало каждого журнального сообщения функцией syslog. Часто это имя программы.
Обычно аргумент options формируется путем применения операции логического ИЛИ к константам из табл. 13.3.
Таблица 13.3. Аргумент options (параметр) для функции openlog