postmaster изредка выводит сообщения, которые бывают часто полезными при поиске неисправностей. Если ты хочешь видеть сообщения отладки postmaster, то ты можешь запустить его с опцией -d и перенаправить выводи в log файл:
% postmaster -d >& pm.log &
Если ты не хочешь видеть эти сообщения, то можешь набрать
% postmaster -S
и
postmaster будет безмолвен. Заметим, что нет амперсанда ("&") в конце строки последнего примера, поэтому postmaster будет работать в интерактивном режиме.
Замечание: При содействии Massimo Dal Zotto
Необязательный файл data/pg_options содержит опции выполнения, используемые сервером для управления трассировкой сообщений и другие настраиваемые параметры сервера. Файл перечитывается сервером при приеме сигнала SIGHUP, что дает возможность изменять опции выполнения на лету без перезапуска Postgres. Опции, указанные в этом файле, могут быть флагами отладки, используемые пакетом трассировки (backend/utils/misc/trace.c) или числовыми параметрами, которые могут использоваться сервером для управления его работой.
Все опции pg_options при запуске сервера установлены в ноль. Новые или измененные опции будут читаться всеми новыми серверами при их запуске. Чтобы сделать действительными любые изменения для всех запущенных серверов, нужно послать SIGHUP в postmaster. Сигнал будет автоматически послан всем серверам. Также мы можем включить изменения только для определенных серверов, посылая им сигнал SIGHUP напрямую.
pg_options также можно указать в ключе -T Postgres:
postgres options -T "verbose=2,query,hostlookup-"
Функции, используемые для печати ошибок и сообщений отладки теперь могут использовать удобства syslog(2). Сообщения, печатающиеся в stdout или stderr, предваряются временной отметкой и pid сервера:
#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
Этот формат улучшает читабельность logs и позволяет людям точно понять какой сервер что делал и в какое время. Это также облегчает написание простых сценариев awk или perl, которые проверяют log для обнаружения ошибок базы данных и проблем, или для вычисления временной статистики по транзакциям.
Сообщения, выводящиеся в syslog, используют log возможность LOG_LOCAL0. Использование syslog можно контролировать с помощью syslog pg_option. К сожалению, многие функции вызывают напрямую printf() для печати своих сообщений в stdout или stderr и этот вывод не может быть перенаправлен в syslog или иметь временных отметок. Рекомендуется, чтобы все вызовы printf замещались макросами PRINTF и вывод в stderr использовал бы EPRINTF, для того чтобы мы могли контролировать весь вывод в стандартном виде.
Формат файла pg_options следующий:
# commentoption=integer_value
# set value for optionoption
# set option = 1option+
# set option = 1 option-
# set option = 0
Заметьте, что
ключевым словом также может быть аббревиатура названия опции, определённой в
backend/utils/misc/trace.c.
Смотри в Использование pg_options полный список опций ключевых слов и возможных значений.