¿Cómo habilitar el registro de todos los SQL ejecutados por PostgreSQL 8.3?
Editado (más información) Cambié 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?
postgresql
logging
Pablo
fuente
fuente

logging_collector = onsystemctl restart postgresqlpuede que no se reinicie el servicio PostgreSQL que ha configurado (no entiendo por qué todavía), por lo que no se aplicarán los cambios en el archivo de configuración. Es más seguro de usarpg_ctl(opg_ctlclusteren Debian).systemctl reload postgresql,systemctl restart postgresql,service postgresql reloadyservice postgresql restarttodos los cambios de configuración renderiza eficaz.Respuestas:
En su
data/postgresql.confarchivo, cambie lalog_statementconfiguración a'all'.Editar
Mirando su nueva información, diría que puede haber algunas otras configuraciones para verificar:
log_destinationvariablelogging_collectorlog_directorydirectorio ya exista dentro deldatadirectorio y que el usuario de postgres pueda escribir en él.fuente
pg_ctl reloadALTER SYSTEMcomando, un superusuario puede configurar los parámetros de GUC desde SQL.datadirectorio citado en la respuesta no es su nombre literal; se refiere a la ruta asignada a ladata_directoryvariable en el archivo de configuración de PostgreSQL. En Debian y Ubuntu GNU / Linux, este archivo generalmente reside en/etc/postgresql/$v/main/postgresql.confdónde$vestá la versión del servidor. Además, en los sistemas antes mencionados, cuándolog_destination = 'stderr'se escribe la salida/var/log/postgresql/postgresql-$v-main.log, dónde$vestá la versión del servidor (no en alguna ubicación dentrodata_directory).Edite su
/etc/postgresql/9.3/main/postgresql.confy cambie las líneas de la siguiente manera.Nota : Si no encontró el
postgresql.confarchivo, simplemente escriba$locate postgresql.confun 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'alog_statement = 'all'#logging_collector = offalogging_collector = onOpcional :
SELECT set_config('log_statement', 'all', true);sudo /etc/init.d/postgresql restartosudo service postgresql restartConsulta de fuego en postgresql
select 2+2Encuentra inicio de sesión actual
/var/lib/pgsql/9.2/data/pg_log/Los archivos de registro tienden a crecer mucho con el tiempo y pueden matar su máquina. Por su seguridad, escriba un script bash que borre los registros y reinicie el servidor postgresql.
Gracias @paul, @Jarret Hardie, @ Zoltán, @Rix Beck, @Latif Premani
fuente
# log_destination = 'stderr'el archivo de configuración antes de que esto funcionara.log_filename = 'postgresql-%d.log'y no, no se sobrescribirá después de cada reinicio, se agregará cada día y se sobrescribirá cada mes. Por supuesto, hay días diferentes según el mes 28,29,30,31, pero se entiende la idea.Con un derecho de usuario correspondiente, puede usar la consulta anterior después de conectarse. Esto afectará el registro hasta que finalice la sesión.
fuente
SET log_statement = 'all'o (para el nivel de transacción)SET LOCAL log_statement = 'all'. También puede estar interesado en la configuraciónclient_min_messagesylog_min_messages.permission denied to set parameter "log_statement"ya que mi usuario no es superusuario.GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION function_name ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]También necesita agregar estas líneas en PostgreSQL y reiniciar el servidor:
fuente
Required to be on for csvlogs, pensando que esta opción era registrar el resultado de la consulta y no solo las declaraciones, pero no es el caso.FYI: Las otras soluciones solo registrarán las declaraciones de la base de datos predeterminada, generalmente,
postgrespara registrar otras; comience con su solución; entonces:Ref: https://serverfault.com/a/376888 /
log_statementfuente
Establecer
log_statementenall:Informe y registro de errores - log_statement
fuente
+1 a las respuestas anteriores. Yo uso siguiente config
fuente
Solo para tener más detalles sobre CentOS 6.4 (Red Hat 4.4.7-3) que ejecuta PostgreSQL 9.2, según las instrucciones que se encuentran en esta página web :
log_statement = 'all'ylog_min_error_statement = erroren/var/lib/pgsql/9.2/data/postgresql.conf./usr/pgsql-9.2/bin/pg_ctl reload -D /var/lib/pgsql/9.2/data/./var/lib/pgsql/9.2/data/pg_log/fuente
pg_ctl reloades suficiente y no interrumpe las conexiones. No estoy convencido de que esta respuesta agregue algo a los que ya están aquí.También debe establecer este parámetro para registrar cada declaración:
fuente
Estaba tratando de configurar el
log_statementarchivo de configuración de postgres, pero de hecho el archivo no fue leído por nuestros postgres.Confirmé que usando la solicitud:
Yo uso de esta manera https://stackoverflow.com/a/41912295/2294168
fuente