Como os filtros são combinados no syslog-ng

2

Se eu tiver uma entrada no syslog-ng

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

E, digamos, filter4 é um filtro muito permissivo e filter3 é um filtro para erradicar alguns hosts irritantes. Se filter2 e / ou filter1 permitir um desses hosts irritantes, ele será registrado?

    
por Peter Turner 02.04.2015 / 23:09

1 resposta

3

Do guia do administrador do syslog-ng (v 2.0, que é antigo, mas o que você está usando)

When a log statement includes multiple filter statements, syslog-ng sends a message to the destination only if all filters are true for the message. In other words, the filters are connected with the logical AND operator. In the following example, no message arrives to the destination, because the filters are exclusive (the hostname of a client cannot be example1 and example2 at the same time).

Então, isso faz sentido, seria muito complicado e não documentado se funcionasse de outra maneira. Então você vai ter que encontrar outra maneira de realizar o que você está tentando fazer!

Parece que, em geral, a maneira como você deseja excluir um host é usar not host('HOSTNAME') or (host('HOSTNAME') and level(...) ) como seu filtro

    
por 02.04.2015 / 23:23