UNIX: разработка сетевых приложений, стр. 147
Более новые реализации отключают возможность создания сокета UDP, если она не задана администратором, поскольку если позволить кому угодно отправлять дейтаграммы UDP на этот порт (возможно, заполняя приемный буфер его сокета), это может привести к тому, что законные сообщения не будут получены (атака типа отказ в обслуживании) или переполнится файловая система из-за неограниченного роста журналов.
Между реализациями демона syslogd существуют различия. Например, доменные сокеты Unix используются Беркли-реализациями, а реализации System V используют потоковый драйвер (streams log driver). Различные реализации, происходящие от Беркли, используют для доменных сокетов Unix различные полные имена. Мы можем игнорировать все эти тонкости, если используем функцию syslog.
Мы можем отправлять сообщения о событиях для записи в журнал (log messages) демону
syslogdsyslog13.3. Функция syslog
Поскольку у демона нет управляющего терминала, он не может просто вызвать функцию
fprintfstderrsyslog#include <syslog.h>void syslog(int <i>priority</i>, const char *<i>message</i>, ...);Хотя эта функция изначально разрабатывалась для BSD, в настоящее время она предоставляется большинством производителей систем Unix. Описание
syslogsyslogАргумент
prioritylevelfacilitymessageprintf%merrnomessageСообщения для журнала имеют значение
levellevelLOG_NOTICEТаблица 13.1. Аргумент level журнальных сообщений
| Level | Значение | Описание |
|---|---|---|
| LOG_EMERG | 0 | Система не может функционировать, экстренная ситуация (наивысший приоритет) |
| LOG_ALERT | 1 | Следует немедленно принять меры, срочная ситуация |
| LOG_CRIT | 2 | Критическая ситуация |
| LOG_ERR | 3 | Состояние ошибки |
| LOG_WARNING | 4 | Предупреждение |
| LOG_NOTICE | 5 | Необычное, хотя и не ошибочное состояние (значение аргумента level по умолчанию) |
| LOG_INFO | 6 | Информационное сообщение |
| LOG_DEBUG | 7 | Отладочные сообщения (низший приоритет) |
Сообщения также содержат аргумент
facilityfacilityLOG_USERТаблица 13.2. Аргумент facility журнальных сообщений
| facility | Описание |
|---|---|
| LOG_AUTH | Сообщения no безопасности/авторизации |
| LOG_AUTHPRIV | Сообщения по безопасности/авторизации (частные) |
| LOG_CRON | Демон cron |
| LOG_DAEMON | Системные демоны |
| LOG_FTP | Демон FTP |
| LOG_KERN | Сообщения ядра |
| LOG_LOCAL0 | Локальное использование |
| LOG_LOCAL1 | Локальное использование |
| LOG_LOCAL2 | Локальное использование |
| LOG_LOCAL3 | Локальное использование |
| LOG_LOCAL4 | Локальное использование |
| LOG_LOCAL5 | Локальное использование |
| LOG_LOCAL6 | Локальное использование |
| LOG_LOCAL7 | Локальное использование |
| LOG_LPR | Демон принтера |
| LOG_MAIL | Почтовая система |
| LOG_NEWS | Система телеконференций |
| LOG_SYSLOG | Внутренние сообщения системы syslog |
| LOG_USER | Сообщения пользовательского уровня (значение аргумента facility по умолчанию) |
| LOG_UUCP | Система UUCP |