Come registrare le query PostgreSQL?

Come abilitare la registrazione di tutti gli SQL eseguiti da PostgreSQL 8.3?

Modificato (maggiori informazioni) Ho cambiato queste righe:

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

E riavviare il servizio PostgreSQL … ma non è stato creato alcun registro … Sto usando Windows Server 2003.

Qualche idea?

Nel file data/postgresql.conf , modificare l’impostazione log_statement su 'all' .


modificare

Guardando le tue nuove informazioni, direi che ci potrebbero essere alcune altre impostazioni da verificare:

  • assicurati di aver triggersto la variabile log_destination
  • assicurati di accendere il logging_collector
  • assicuratevi inoltre che la directory pg_log esista già all’interno della directory dei data e che l’utente postgres possa scrivere su di essa.

Modifica il tuo /etc/postgresql/9.3/main/postgresql.conf e modifica le linee come segue.

Nota : se non hai trovato il file postgresql.conf , digita $locate postgresql.conf in un terminale

  1. #log_directory = 'pg_log' in log_directory = 'pg_log'

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

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

  4. #logging_collector = off a logging_collector = on

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

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

  7. Query di fuoco in postgresql select 2+2

  8. Trova il log corrente in /var/lib/pgsql/9.2/data/pg_log/

I file di registro tendono a crescere molto nel tempo e potrebbero uccidere il computer. Per motivi di sicurezza, scrivi uno script bash che cancellerà i log e riavvierà il server postgresql.

Grazie a @paul, @Jarret Hardie, @ Zoltán, @Rix Beck, @Latif Premani

 SELECT set_config('log_statement', 'all', true); 

Con un diritto utente corrispondente può utilizzare la query sopra riportata dopo la connessione. Ciò influirà sulla registrazione fino alla fine della sessione.

È inoltre necessario aggiungere queste righe in PostgreSQL e riavviare il server:

 log_directory = 'pg_log' log_filename = 'postgresql-dateformat.log' log_statement = 'all' logging_collector = on 

Imposta log_statement su all :

Segnalazione errori e registrazione – log_statement

+1 alle risposte precedenti. Io uso la seguente configurazione

 log_line_prefix = '%t %c %u ' # time sessionid user log_statement = 'all' 

Cordiali saluti: le altre soluzioni registreranno solo le istruzioni dal database predefinito, solitamente postgres per registrare gli altri; inizia con la loro soluzione; poi:

 ALTER DATABASE your_database_name SET log_statement = 'all'; 

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

Solo per avere maggiori dettagli su CentOS 6.4 (Red Hat 4.4.7-3) che esegue PostgreSQL 9.2, in base alle istruzioni trovate su questa pagina web :

  1. Set (uncomment) log_statement = 'all' e log_min_error_statement = error in /var/lib/pgsql/9.2/data/postgresql.conf .
  2. Ricarica la configurazione di PostgreSQL. Per me, questo è stato fatto eseguendo /usr/pgsql-9.2/bin/pg_ctl reload -D /var/lib/pgsql/9.2/data/ .
  3. Trova il log di oggi in /var/lib/pgsql/9.2/data/pg_log/