Обработка сообщений демоном syslogd
Все сообщения, формируемые отдельными программами с помощью функции syslog, отправляются через сокет /dev/log системному демону syslogd. Надо сказать, что вообще-то в системе запускаются два демона протоколирования: syslogd и klogd, входящие в состав пакета sysklogd (). Демон klogd отвечает за протоколирование событий, происходящих в ядре системы. Ядро не может использовать стандартную функцию syslog - стандартные библиотеки предназначены для использования только обычными приложениями, а поскольку ядро тоже нуждается в аналогичных функциях, в него включены свои библиотеки, недоступные приложениям, поэтому ядро использует свой собственный механизм генерации сообщений.
Обработка сообщений демоном syslogd состоит в том, что он постоянно отслеживает появление сообщений и сравнивает каждую пришедшую запись с правилами, которые находятся в файле /etc/syslog.conf и записываются в виде строки, состоящей из двух полей. Левое поле () задает один или несколько шаблонов, по которым отбираются сообщения. Правое () определяет порядок обработки отобранных сообщений. Каждый шаблон в поле имеет вид . Значениями поля может служить одно из условных наименований категорий, несколько таких наименований или символ (все категории). Значениями поля может служить одно из условных наименований уровня, символ (все сообщения данной категории, независимо от уровня) или слово none (не записывать сообщения данной категории).
Когда обнаруживается соответствие категории и уровня полученного сообщения с одним из шаблонов поля какой-то строки, syslogd обрабатывает запись в соответствии с действием, прописанным в правом поле данной строки. В поле может стоять:
В качестве устройства в поле можно указать также принтер - /dev/lp0, что целесообразно, когда речь идет об особо важных системах.
Протоколы, которые распечатаны, не могут быть стерты или изменены хакерами, так что это неплохое применение для старого матричного принтера.
Кроме строк с правилами в файле /etc/syslog.conf, могут содержаться пустые строки и строки комментариев. Подробнее о структуре файла /etc/syslog.conf можно прочитать на man-страничке syslog.conf.
Если сообщение соответствует шаблонам двух или более строк, оно будет обрабатываться по каждому из этих правил. Кроме того, если в поле перечислены несколько пар , то последующие пары могут отменить действие предыдущих. Пример такой отмены дан на рис. 1 - в файл /var/log/messages записываются все сообщения, уровень которых равен или выше info, однако при этом пропускаются (не записываются) сообщения категорий mail, authpriv и cron.
|
Из рис. 1 видно, что большинство сообщений просто записывается в различные файлы протоколов, расположенные в каталоге /var/log или его подкаталогах, причем основным файлом системного протокола в Red Hat Linux является файл /var/log/messages.В него не попадают только сообщения категорий mail, authpriv и cron (для которых выделены отдельные файлы).