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

Отфильтровать объект в syslog-ng

Ниже приводится некоторое содержание моих /etc/syslog-ng/syslog-ng.confсвязанные с входом в файл debug.log

исходный s_sys {файл ("/ proc / kmsg" log_prefix ("kernel:")); unix-stream ("/ dev / log"); внутренний (); # udp (ip (0.0.0.0) порт (514)); };

целевой d_mesg {файл ("/ tmp / log / debug.log"); };

фильтр f_filter2 {уровень (info..emerg), а не объект (почта, authpriv, cron); };

журнал {источник (s_sys); фильтр (f_filter2); пункт назначения (d_mesg); };

Обращаю ваше внимание на строку, содержащую слово «фильтр». Там вы видите, что я отфильтровываю журналы из mail, authpriv и cron. Насколько мне известно, mail, authpriv и cron предопределенные возможности системного журнала.

Мой запрос:

Я написал демона с именем «pm», который также использует API системного журнала для ведения журнала. Теперь все, что регистрирует мой демон, попадает в файл /tmp/log/debug.log как вы можете видеть выше. Я хотел бы отфильтровать журналы "pm" от входа в /tmp/log/debug.log. Чтобы было понятнее, я хотел бы иметь фильтр вроде

фильтр f_filter2 {уровень (info..emerg), а не объект (почта, authpriv, cron, pm); };

Обратите внимание: разница в f_filter2 по сравнению с приведенным выше.

Можно ли это сделать ? Как я могу предотвратить pm журналы от входа в /tmp/log/debug.log?

Я получил ответ.

Мы можем создавать фильтры, используя ключевое слово filter:

filter <filtername> { expression; };

Где выражение - это простое логическое выражение. Вы можете использовать «и», «или» и «не» для подключения встроенных функций. Функции могут быть одной из следующих:

  • объект (список названий объектов, разделенных запятыми)

  • уровень (список имен приоритетов, разделенных запятыми, ИЛИ диапазон, разделенный знаком "..")

  • program(regexp to match program name)

  • хост (регулярное выражение для соответствия имени программы)

  • совпадение (регулярное выражение для соответствия имени программы)

Итак, если мы хотим добавить в фильтр нашу собственную программу, например pm, используйте ее следующим образом:

фильтр f_filter2 {уровень (info..emerg), а не средство (почта, authpriv, cron) и программа (pm); };

А если мы хотим отфильтровать сообщения журнала «pm», используйте такой фильтр:

фильтр f_filter2 {уровень (info..emerg), а не средство (почта, authpriv, cron), а не программа (pm); };