Для анализа журналов postgres наш рабочий процесс:
Мы хотим исключить некоторые выбросы, например, при запуске приложения, потому что для нас они являются бесполезными данными и просто загрязняют файл журнала.
Для этого: как / где я могу указать фильтр рабочего времени (с .. по)?
Идеальное решение - установить фильтр в postgres.
Менее идеального, фильтруйте в rsyslog.
Последний вариант - фильтровать в pgbadger: вывод html будет обрезан, но наши серверы продолжают писать толстые файлы журнала.
текущая конфигурация rsyslog:
:msg, contains, "connection authorized: user=root database=root" ~
:msg, contains, "FATAL: database \"root\" does not exist" ~
local0.* -/var/log/postgresql.log
Вы можете указать фильтр, используя время в rsyslog.conf
используя свойства системы текущее время, например hour
и minute
. Например,
if $$hour >= '10' and $$hour <='17' then /var/log/output
Насколько я понимаю, значения часов и минут представляют собой 2-символьные строки с нулем в начале.
Вы можете совместить это с тестом для объекта (local0 и т. Д.), Например:
if ( $syslogfacility-text=='local0' ) and ( $$hour <= '10' or $$hour>='20' ) then stop
(где stop
это новый способ сказать ~
), или, если хотите
if ( $syslogfacility-text=='local0' ) and ( $$hour > '10' and $$hour<'20' ) then /var/log/output
Обратите внимание, что эти фильтры должны быть в одной строке, начиная с первого столбца.