Ниже приводится некоторое содержание моих /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); };