Назад | Перейти на главную страницу

Как фильтры объединены в syslog-ng?

Если у меня есть запись в syslog-ng

log {
  source (src);
  filter (filter1);
  filter (filter2);
  filter (filter3);
  filter (filter4);
  destination (all_log)
 }

И скажи filter4 это очень разрешительный фильтр и filter3 это фильтр для уничтожения пары надоедливых хостов. Если filter2 и / или filter1 разрешить один из этих надоедливых хостов, он будет зарегистрирован?

Из руководства администратора syslog-ng (версия 2.0 устарела, но используется вами)

Когда оператор журнала включает несколько операторов фильтра, syslog-ng отправляет сообщение в пункт назначения, только если для сообщения верны все фильтры. Другими словами, фильтры связаны логическим оператором И. В следующем примере сообщение не приходит к месту назначения, потому что фильтры являются исключительными (имя хоста клиента не может быть example1 и example2 одновременно).

Так что это имеет смысл, это было бы слишком сложно и недокументировано, если бы все работало по-другому. Так что вам нужно будет найти другой способ добиться того, что вы пытаетесь сделать!

Похоже, что, в общем, вы хотели бы исключить хост, используя not host('HOSTNAME') or (host('HOSTNAME') and level(...) ) как ваш фильтр.