syslog(priority, "%s", user_supplied_string);
Закрытие журнала
Закончив добавлять сообщения в журнал, мы можем вызвать функцию closelog(), чтобы освободить файловый дескриптор, связанный с сокетом /dev/log.
#include
void closelog(void);
Поскольку демон обычно удерживает соединение с системным журналом на протяжении всей своей работы, вызов closelog() в основном не применяется.
Фильтрация журнальных записей
Функция setlogmask() устанавливает маску, которая фильтрует сообщения, записанные с помощью syslog().
#include
int setlogmask(int
Возвращает предыдущую маску приоритетов журнала
Любое сообщение, чей приоритет (level) не указан в текущей маске, отбрасывается. Маска по умолчанию позволяет записывать сообщения любой важности.
Макрос LOG_MASK() (объявленный в заголовочном файле
setlogmask(LOG_MASK(LOG_EMERG) | LOG_MASK(LOG_ALERT |
LOG_MASK(LOG_CRIT) | LOG_MASK(LOG_ERR));
Макрос LOG_MASK() описан в стандарте SUSv3. Большинство реализаций UNIX (включая Linux) предоставляют также нестандартный макрос LOG_UPTO(), который создает битовую маску, фильтрующую все сообщения, начиная с заданного приоритета (и выше). С его помощью можно упростить предыдущий вызов setlogmask():
setlogmask(LOG_UPTO(LOG_ERR));
37.5.3. Файл /etc/syslog.conf
Конфигурационный файл /etc/syslog.conf определяет поведение демона syslogd. Он состоит из правил и комментариев (последние начинаются с символа #). Правила в общем случае имеют следующий вид:
категория. приоритет действие
Сочетание
*.err /dev/tty10
auth.notice root
*.debug;mail.none;news.none — /var/log/messages
Согласно первому правилу сообщения всех категорий (*) с приоритетом err (LOG_ERR) или выше должны передаваться консольному устройству /dev/tty10. Второе правило делает так, что сообщения, связанные с авторизацией (LOG_AUTH) и имеющие приоритет notice (LOG_NOTICE) или выше, должны отправляться во все консоли или терминалы, в которых работает пользователь root. Это, например, позволит администратору немедленно получать все сообщения о неудачных попытках повышения привилегий (su).
В последней строчке демонстрируются некоторые продвинутые аспекты синтаксиса для описания правил. В ней перечислено сразу несколько селекторов, разделенных точкой с запятой. Первый селектор относится к сообщениям любой категории (*) с приоритетом debug (самым низким) и выше; то есть это затрагивает
При каждом изменении файла syslog.conf демону следует отправлять сигнал, чтобы он смог заново себя инициализировать:
$ killall — HUP syslogd
Синтаксис файла syslog.conf позволяет создавать куда более сложные правила, чем те, что были показаны. Все подробности можно найти на справочной странице syslog.conf(5).
Демон — это долгоживущий процесс, не связанный с контролирующим терминалом (то есть работающий в фоновом режиме). Он выполняет специфичные задачи, такие как предоставление удаленного входа в систему или обслуживание веб-страниц. Чтобы стать демоном, программа должна выполнить стандартную последовательность шагов, включая выполнение вызовов fork() и setsid().