Depuración de mensajes

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 &
    
Si no desea ver estos mensajes, puede escribir
% postmaster -S
    
y el postmaster entrará en modo 'S'ilencioso. Nótese que no se incluye el simbolo '&' en el último ejemplo, ya que el postmaster se ejecutará en segundo plano.

pg_options

Nota: 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
     
Nótese que palabra_clave puede ser también una abreviación del nombre de opción definido en backend/utils/misc/trace.c.

Véase Usando pg_options para una lista completa de las opciones y sus posible valores.