PostgreSQL: Куда идет вывод ereport ()? - PullRequest
3 голосов
/ 07 января 2012

Я занимаюсь разработкой библиотеки расширений C для PostgreSQL. Я использую много вызовов ereport (), чтобы помочь в дальнейшей отладке.

Типичным примером использования в моем коде будет что-то вроде этого:

ereport(NOTICE, (errmsg("[%s]: Returned nonzero result (%d).", (const char*)__FUNCTION__, ret)) );

Однако, когда я заглядываю в /var/log/postgresql/postgresql-8.4-main.log, мои сообщения, похоже, не появляются там - только сообщения от того, что я предполагаю, является сервером db server.

Так, где хранятся мои сообщения журнала?

Кстати, я использую PG 8.4 в Ubuntu Linux (10.0.4)

1 Ответ

3 голосов
/ 07 января 2012

По умолчанию регистрация некритических сообщений не включена при новой установке.Вы настраиваете его, устанавливая log_destination и logging_collector.

PostgreSQL имеет несколько уровней ведения журнала, и по умолчанию уровень NOTICE не сохраняется в файлах журнала (даже если они включены).Это настраивается настройкой log_min_messages.Однако NOTICE он отправляется клиенту по умолчанию.Это настраивается настройкой client_min_messages.

Поэтому, если вы хотите, чтобы они были сохранены в файлах журнала, вам придется либо изменить NOTICE на WARNING в своем коде, либо установить log_min_messages = notice.

См. Это http://www.postgresql.org/docs/8.4/static/runtime-config-logging.html и, возможно, это http://www.depesz.com/index.php/2011/05/06/understanding-postgresql-conf-log/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...