Logowanie do pliku wszystkich zapytań w PostgreSQL

Aby zapisywać w logach wszystkie zapytania jakie się wykonują w naszej bazie danych wystarczy zmienić tylko kilka opcji konfiguracyjnych i zrestartować serwer Postgresa. Tak więc w pliku postgresql.conf (znajdującym się katalogu, w którym trzymane są bazy, zwykle tam gdzie wskzuje zmienna PGDATA, a w „debianopodobnych” w /etc/postgresql/8.x/main/) w sekcji Error Reporting and Logging ustawiamy:
log_destination = 'stderr' logging_collector = on log_directory = 'pg_log' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_statement = 'all'
Gdzie:
log_destination— tak jest ustawiony domyślnie, więc tylko sprawdzamy czy się nic nie zmieniło.logging_collector— włączamy, aby logi trafiające dostderrmogły być zapisane do pliku.log_directory— dowolna nazwa katalogu dla logów, znajdującego się katalogu gdzie trzymamy bazę. Jeśli nie ma takiego należy go utworzyć i upewnić się, że postgres ma uprawnienia do zapisu.log_filename— nazwa pliku z logami, tutaj ze zdefiniowanym dniem.log_statement— grupa zapytań jakie chcemy zapisywać do pliku. Tutaj wybrane wszystkie. Inne opcje: none (wyłączenie zapisu), ddl (zapytania CREATE, ALTER, DROP), mod (tutaj zapewne chodzi o zapytania UPDATE, ale tego nie testowaliśmy).
Podobne wpisy:
- Zapamiętywanie hasła dla PostgreSQL w pliku
- PostgreSQL: Reset wszystkich sekwencji
- Migracja MySQL → PostgreSQL aplikacji w Symfony 1.1
Autorzy zdjęć: FeatheredTar
One Comment
→





Chyba o wiele wygodniej jest zamiast log_statement=all zmienić log_min_duration_statement. Poza tym można też te opcje zmieniać dla każdej bazy osobno, niekoniecznie dla całego klastra.