Muszę monitorować aktywność użytkowników w naszych bazach danych. Ustawiłem następujące parametry w postgresql.conf
:
log_min_duration_statement = 0
log_connections = on
log_disconnections = on
log_line_prefix = '%t %a %d %h %u |'
Zdaję sobie jednak sprawę, że większość plików dziennika jest wypełniona instrukcjami wykonywanymi przez postgres
użytkownika, które są używane przez skrypty, które napisałem do zadań konserwacyjnych: ponownie oblicz zmaterializowane widoki, pg_dump, pg_restore, wyodrębnij widoki jako pliki tabelaryczne itp. Wynik jest codzienny pliki dziennika o rozmiarze ponad 12 Mb.
Czy istnieje sposób na wykluczenie aktywności konkretnego użytkownika z dziennika?
postgresql
log
Sébastien Clément
źródło
źródło
ALTER USER ... SET log_connections = off
itp.dezso
(superużytkownik), zawsze dostaję,ERROR: parameter "log_connections" cannot be set after connection start
gdy próbujęALTER ROLE bob SET log_connections = off
Odpowiedzi:
Za pomocą
ALTER ROLE ... SET parameter;
polecenia można było dostosować parametry dziennika specyficzne dla użytkownika. Pamiętaj, że parametr działa dopiero po wylogowaniu.Ustawienie log_min_duration_statement = -1 (pierwsze logowanie):
konsola psql
Wynik w dzienniku:
Zauważ, że w tej sesji wszystkie instrukcje są widoczne w logu nawet po ustawieniu log_min_duration_statement = -1.
Widząc efekt log_min_duration_statement (drugie logowanie):
konsola psql
Wynik w dzienniku:
Zgodnie z oczekiwaniami żadna z instrukcji nie jest rejestrowana.
źródło