Я использую Solaris 10 и увидел эту строку в/etc/syslog.conf
*.err;kern.debug;daemon.notice;mail.crit;auth.debug;local2.notice /var/adm/messages
Означает ли это, что если у меня естьauth.err, сообщение об ошибке появится у меня /var/adm/message
дважды из-за:
*.err
auth.debug
Допустим, у меня есть еще одна строка:
*.emerg *
*.err;kern.debug;daemon.notice;mail.crit;auth.debug;local2.notice /var/adm/messages
Означает ли это, что если у меня естьядро.emerg, он будет регистрироваться дважды из /var/adm/messages
-за
*.emerg * and
kern.debug /var/adm/messages
?
=======
Добавлено
auth.notice ifdef(`LOGHOST', /var/log/authlog, @loghost)
как syslog проверяет, является ли эта машина loghost или нет? проверяя /etc/hosts на наличие псевдонима "loghost" и проверяя, совпадает ли он с IP машины?
У меня syslog.conf без ifdef, и он все равно работает. Необходим ли ifdef или нет?
решение1
Правила в основном определяют фильтры, применяемые во время выполнения к каждому сообщению, поэтому на самом деле не предполагается, что в одном и том же месте назначения/файле будут дублироваться сообщения.
Для одного действия можно указать несколько селекторов, используя разделитель в виде точки с запятой ('';''). Помните, что каждый селектор в поле селектора может перезаписывать предыдущие.
Однако вы можете получить и получаете одно и то же сообщение, отправленное в разные файлы, включая консоль.
В случае
*.emerg *
Что является сокращением для всех пользователей в syslog, то это будет для всех пользователей.
Все вошли в систему
Экстренные сообщения часто отправляются всем пользователям, находящимся в данный момент в сети, чтобы уведомить их о том, что с системой происходит что-то странное. Чтобы указать эту функцию wall(1), используйте звездочку (''*'').
Таким образом, в kernel.emerg он будет отправлен всем пользователям и в /var/adm/messages одновременно; однако это будет только одна строка в /var/adm/messages.
Поведение оригинального BSD syslogd таково, что все сообщения указанного приоритета и выше регистрируются в соответствии с заданным действием.
Цитаты взяты из syslog.conf
страницы руководства:
Страница руководства syslog.conf(5)
Что касается ifdef, то возьмем в качестве примера:
auth.notice ifdef(`LOGHOST', /var/log/authlog, @loghost)
Если определен LOGHOST (т.е. данный системный журнал является LOGHOST), он отправит журнал/сообщение в /var/log/authlog, в противном случае он будет отправлен в @loghost.
Что касается ifdef, то это не является обязательным, а что касается LOGHOST, то согласноэта страницаэто имя машины, взятое из файла /etc/hosts (или, возможно, DNS, только для тестирования)
Чтобы отредактировать /etc/hosts (./inet/hosts) и добавить одну или несколько строк, определяющих IP-адрес для loghost (имя произвольное, и если определено несколько удаленных хостов, вы можете использовать любое имя по вашему желанию)