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
#log_directory = ''pg_log''
alog_directory = ''pg_log''
#log_filename = ''postgresql-%Y-%m-%d_%H%M%S.log''
alog_filename = ''postgresql-%Y-%m-%d_%H%M%S.log''
#log_statement = ''none''
tolog_statement = ''all''
#logging_collector = off
alogging_collector = on
Opcional :
SELECT set_config(''log_statement'', ''all'', true);
sudo /etc/init.d/postgresql restart
osudo service postgresql restart
Consulta de fuego en postgresql
select 2+2
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 dedata
y que el usuario de postgres pueda escribir en él.
Establecer log_statement
a all
:
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'';
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 :
- Establezca (
log_statement = ''all''
)log_statement = ''all''
ylog_min_error_statement = error
en/var/lib/pgsql/9.2/data/postgresql.conf
. - 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/
. - 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.