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

syslog-ng: фильтрация сообщений без категорий

Я установил конфигурацию, в которой сообщения классифицируются и записываются в соответствующие файлы (места назначения). Мне любопытно -- можно ли записывать в файл сообщения, которые не захватываются определенными фильтрами?

Например, есть фильтры для dhcpd, dhclient, acpid, sshd Сообщения. И я хочу получать сообщения, которые не попадают во все 4 категории выше.

я вижу tags доступны как внутренняя структура для каждого сообщения. Я попытался поставить отметку для каждой категории и взять без тегов вот так:

rewrite r_set_routed { set-tag('routed'); };
filter f_untagged { not tags('routed'); };
filter f_dhcpd_program { program('dhcpd'); };
<...>
log { source(s_local); rewrite(r_set_routed); filter(f_dhcpd_program); destination(d_dhcpd_file); };
<...>
log { source(s_local); filter(f_untagged); destination(d_unfiltered_file); };

Но это не работает (похоже r_set_routed переписать в одном log {} не влияет на другие log {}). Я знаю, что можно отрицать все фильтры, чтобы создать фильтр «не соответствует всему вышеупомянутому», но это чреватый ошибками и грязный способ, которого я хочу избежать.

используйте параметр 'flags (final)' в путях журналов, которые имеют фильтры, и путь журнала для непомеченных сообщений в конце. Этот последний путь к журналу не требует фильтров или флагов. Подробнее см. https://www.balabit.com/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/reference-logflags.html