multiple columns postgresql logging

columns - ¿Cómo registrar consultas de PostgreSQL?



postgresql documentation (8)

+1 a las respuestas anteriores. Yo uso la siguiente configuración

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

¿Cómo habilitar el registro de todos los SQL ejecutados por PostgreSQL 8.3?

Editado (más información) He cambiado estas líneas:

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

Y reinicie el servicio PostgreSQL ... pero no se creó ningún registro ... Estoy usando Windows Server 2003.

¿Algunas ideas?


Edite su /etc/postgresql/9.3/main/postgresql.conf , y cambie las líneas de la siguiente manera.

Nota : Si no encontró el archivo postgresql.conf , simplemente escriba $locate postgresql.conf en una terminal

  1. #log_directory = ''pg_log'' a 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'' to log_statement = ''all''

  4. #logging_collector = off a logging_collector = on

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

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

  7. Consulta de fuego en postgresql select 2+2

  8. Encuentre el registro actual en /var/lib/pgsql/9.2/data/pg_log/

Los archivos de registro tienden a crecer mucho con el tiempo y podrían matar su máquina. Para su seguridad, escriba un script de bash que elimine los registros y reinicie el servidor postgresql.

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


En su archivo data/postgresql.conf , cambie la configuración log_statement a ''all'' .

Editar

Mirando su nueva información, diría que puede haber algunas otras configuraciones para verificar:

  • Asegúrate de haber activado la variable log_destination
  • Asegúrate de encender el logging_collector
  • también asegúrese de que el directorio pg_log ya exista dentro del directorio de data y que el usuario de postgres pueda escribir en él.


FYI: Las otras soluciones solo registrarán las declaraciones de la base de datos predeterminada, generalmente postgres para registrar otras; Comience con su solución; entonces:

ALTER DATABASE your_database_name SET log_statement = ''all'';

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


Solo para tener más detalles sobre CentOS 6.4 (Red Hat 4.4.7-3) ejecutando PostgreSQL 9.2, según las instrucciones que se encuentran en esta página web :

  1. Establezca ( log_statement = ''all'' ) log_statement = ''all'' y log_min_error_statement = error en /var/lib/pgsql/9.2/data/postgresql.conf .
  2. Vuelve a cargar la configuración de PostgreSQL. Para mí, esto se hizo ejecutando /usr/pgsql-9.2/bin/pg_ctl reload -D /var/lib/pgsql/9.2/data/ .
  3. Encuentre el registro de hoy en /var/lib/pgsql/9.2/data/pg_log/

También necesita agregar estas líneas en PostgreSQL y reiniciar el servidor:

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


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

Con un derecho de usuario correspondiente puede utilizar la consulta anterior después de conectarse. Esto afectará el registro hasta que finalice la sesión.