Jak rejestrować zapytania PostgreSQL?

Jak włączyć logowanie wszystkich SQL wykonanych przez PostgreSQL 8.3?

Edited (more info) Zmieniłem te linijki:

log_directory = 'pg_log'                    
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_statement = 'all'

I uruchom ponownie usługę PostgreSQL... ale nie stworzono żadnego dziennika... Używam systemu Windows Server 2003.

Jakieś pomysły?
Author: ROMANIA_engineer, 2009-04-06

8 answers

W pliku data/postgresql.conf zmień ustawienie log_statement na 'all'.


Edit

Patrząc na twoje nowe informacje, powiedziałbym, że może być kilka innych ustawień do weryfikacji:

  • upewnij się, że włączyłeś zmienną log_destination
  • upewnij się, że włączyłeś logging_collector
  • upewnij się również, że katalog pg_log istnieje już wewnątrz katalogu data i że użytkownik postgres może do niego pisać.
 397
Author: Jarret Hardie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-17 19:20:32

Edytuj swoje /etc/postgresql/9.3/main/postgresql.conf i zmień linie w następujący sposób.

Uwaga: jeśli nie znalazłeś pliku postgresql.conf, po prostu wpisz $locate postgresql.conf w terminalu

  1. #log_directory = 'pg_log' na log_directory = 'pg_log'

  2. #log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' na log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

  3. #log_statement = 'none' na log_statement = 'all'

  4. #logging_collector = off na logging_collector = on

  5. Opcjonalnie: SELECT set_config('log_statement', 'all', true);

  6. sudo /etc/init.d/postgresql restart lub sudo service postgresql restart

  7. Fire query w postgresql select 2+2

  8. Znajdź aktualne Zaloguj się /var/lib/pgsql/9.2/data/pg_log/

Pliki dziennika mają tendencję do dużego wzrostu w czasie i mogą zabić twoją maszynę. Dla Twojego bezpieczeństwa napisz skrypt bash, który usunie logi i zrestartuje serwer postgresql.

Dzięki @ paul, @ Jarret Hardie , @Zoltán , @Rix Beck, @ Latif Premani
 69
Author: vijay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-27 13:02:26
SELECT set_config('log_statement', 'all', true);

Z odpowiednim prawem użytkownika może korzystać z powyższego zapytania po podłączeniu. Będzie to miało wpływ na logowanie do czasu zakończenia sesji.

 34
Author: Rix Beck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-16 14:18:59

Musisz również dodać te linie w PostgreSQL i ponownie uruchomić serwer:

log_directory = 'pg_log'                    
log_filename = 'postgresql-dateformat.log'
log_statement = 'all'
logging_collector = on
 26
Author: Latif Premani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-11 20:00:06
 24
Author: Chad Birch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-06 16:37:33

+1 do powyższych odpowiedzi. Używam następującej konfiguracji

log_line_prefix = '%t %c %u ' # time sessionid user
log_statement = 'all'
 19
Author: Shekhar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-08 09:53:12

FYI: inne rozwiązania będą logować tylko instrukcje z domyślnej bazy danych-zwykle postgres-do logowania innych; zacznij od ich rozwiązania; następnie:

ALTER DATABASE your_database_name
SET log_statement = 'all';

Ref: https://serverfault.com/a/376888 / log_statement

 15
Author: A T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-08 08:45:54

Aby uzyskać więcej informacji na temat CentOS 6.4 (Red Hat 4.4.7-3) z uruchomieniem PostgreSQL 9.2, W oparciu o instrukcje znalezione na tej stronie :

  1. Set (uncomment) log_statement = 'all' and log_min_error_statement = error in /var/lib/pgsql/9.2/data/postgresql.conf.
  2. Przeładuj konfigurację PostgreSQL. Dla mnie to było zrobione przez running /usr/pgsql-9.2/bin/pg_ctl reload -D /var/lib/pgsql/9.2/data/.
  3. Znajdź dzisiejsze logowanie /var/lib/pgsql/9.2/data/pg_log/
 9
Author: Zoltán,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-09 09:33:30