¿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 = on
systemctl restart postgresql
puede 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_ctlcluster
en Debian).systemctl reload postgresql
,systemctl restart postgresql
,service postgresql reload
yservice postgresql restart
todos los cambios de configuración renderiza eficaz.Respuestas:
En su
data/postgresql.conf
archivo, cambie lalog_statement
configuración a'all'
.Editar
Mirando su nueva información, diría que puede haber algunas otras configuraciones para verificar:
log_destination
variablelogging_collector
log_directory
directorio ya exista dentro deldata
directorio y que el usuario de postgres pueda escribir en él.fuente
pg_ctl reload
ALTER SYSTEM
comando, un superusuario puede configurar los parámetros de GUC desde SQL.data
directorio citado en la respuesta no es su nombre literal; se refiere a la ruta asignada a ladata_directory
variable en el archivo de configuración de PostgreSQL. En Debian y Ubuntu GNU / Linux, este archivo generalmente reside en/etc/postgresql/$v/main/postgresql.conf
dónde$v
está 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$v
está la versión del servidor (no en alguna ubicación dentrodata_directory
).Edite su
/etc/postgresql/9.3/main/postgresql.conf
y cambie las líneas de la siguiente manera.Nota : Si no encontró el
postgresql.conf
archivo, simplemente escriba$locate postgresql.conf
un 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 = 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
Encuentra 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_messages
ylog_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,
postgres
para registrar otras; comience con su solución; entonces:Ref: https://serverfault.com/a/376888 /
log_statement
fuente
Establecer
log_statement
enall
: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 = error
en/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 reload
es 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_statement
archivo 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