El postmaster presenta ocasionalmente mensajes que pueden ser de ayuda en la solución de problemas. Si desea ver mensajes de depuración de postmaster, puede iniciarlo con la opción -d y redirigir la salida a un fichero de registro:
% postmaster -d > pm.log 2>&1 & |
% postmaster -S |
Contribución de Massimo Dal Zotto |
El fichero opcional data/pg_options contiene opciones de ejecución usadas por el backend para controlar mensajes de ejecución y otros parámetros ajustables. Lo que hace interesante a este fichero es el hecho de que es releído por el backend cuando recibe una señal SIGHUP, haciendo así posible cambiar opciones de ejecución sin tener que reiniciar Postgres. Las opciones especificadas en este fichero pueden incluir puntos de depuración usados por el paquete trace (backend/utils/misc/trace.c) o parámetro numéricos que puede usar el backend para controlar su comportamiento. Se pueden definir nuevas opciones y parámetros en backend/utils/misc/trace.c y en backend/include/utils/trace.h.
Las opciones de pg_option pueden especificarse con el parámetro -T de Postgres:
postgres opciones -T "verbose=2,query,hostlookup-" |
Las funciones usadas para imprimir errores y mensajes de depuración pueden ahora usar la utilidad syslog(2). Los mensajes impresos en stdout o stderr son precedidos por una etiqueta informativa que incluye la fecha y hora y el pid del backend:
#timestamp #pid #message 980127.17:52:14.173 [29271] StartTransactionCommand 980127.17:52:14.174 [29271] ProcessUtility: drop table t; 980127.17:52:14.186 [29271] SIIncNumEntries: table is 70% full 980127.17:52:14.186 [29286] Async_NotifyHandler 980127.17:52:14.186 [29286] Waking up sleeping backend process 980127.19:52:14.292 [29286] Async_NotifyFrontEnd 980127.19:52:14.413 [29286] Async_NotifyFrontEnd done 980127.19:52:14.466 [29286] Async_NotifyHandler done |
Este formato mejora la legibilidad de los registros, y permite comprender qué «backend» concreto está haciendo qué y en qué momento. También hace más fácil escribir guiones (scripts) en awk o perl que monitoricen el fichero de registro para detectar errores o problemas en la base de datos, o para contabilizar estadísticas temporales de las transacciones.
Los mensajes impresos por syslog usan la utilidad de registro LOG_LOCAL0. El uso de syslog puede ser controlado por las opciones referentes a él en syslog. Desgraciadamente, muchas funciones llaman directamente a printf() para mostrar sus mensajes en stdout o stderr y esta salida no puede ser redirigida a syslog o incluir información sobre fecha y hora. Sería aconsejable que todas las llamadas a printf pudieran ser reemplazadas por la macro PRINTF y la salida a stderr se cambiaran para que usaran EPRINTF en su lugar, de modo que se pudieran controlar todas las salidas de un modo uniforme.
El formato del fichero pg_options es como sigue:
# comentario opción=valor_entero # set value for opción opción # set opción = 1 opción+ # set opción = 1 opción- # set opción = 0 |
Véase Usando pg_options para una lista completa de las opciones y sus posible valores.