Обсуждение: pgsql: Log remote NOTICE, WARNING, and similar messages using ereport()

Поиск
Список
Период
Сортировка

pgsql: Log remote NOTICE, WARNING, and similar messages using ereport()

От
Fujii Masao
Дата:
Log remote NOTICE, WARNING, and similar messages using ereport().

Previously, NOTICE, WARNING, and similar messages received from remote
servers over replication, postgres_fdw, or dblink connections were printed
directly to stderr on the local server (e.g., the subscriber). As a result,
these messages lacked log prefixes (e.g., timestamp), making them harder
to trace and correlate with other log entries.

This commit addresses the issue by introducing a custom notice receiver
for replication, postgres_fdw, and dblink connections. These messages
are now logged via ereport(), ensuring they appear in the logs with proper
formatting and context, which improves clarity and aids in debugging.

Author: Vignesh C <vignesh21@gmail.com>
Reviewed-by: Álvaro Herrera <alvherre@kurilemu.de>
Reviewed-by: Fujii Masao <masao.fujii@gmail.com>
Discussion: https://postgr.es/m/CALDaNm2xsHpWRtLm-VL_HJCsaE3+1Y_n-jDEAr3-suxVqc3xoQ@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/112faf1378ee62db75cd9e3223c86bf53b8c2736

Modified Files
--------------
contrib/dblink/dblink.c                            |  7 +++++
contrib/postgres_fdw/connection.c                  |  3 +++
.../libpqwalreceiver/libpqwalreceiver.c            |  3 +++
src/include/libpq/libpq-be-fe-helpers.h            | 30 ++++++++++++++++++++++
4 files changed, 43 insertions(+)


Re: pgsql: Log remote NOTICE, WARNING, and similar messages using ereport()

От
Andrei Lepikhov
Дата:
On 22/7/2025 07:22, Fujii Masao wrote:
> Log remote NOTICE, WARNING, and similar messages using ereport().
> 
> Previously, NOTICE, WARNING, and similar messages received from remote
> servers over replication, postgres_fdw, or dblink connections were printed
> directly to stderr on the local server (e.g., the subscriber). As a result,
> these messages lacked log prefixes (e.g., timestamp), making them harder
> to trace and correlate with other log entries.
> 
> This commit addresses the issue by introducing a custom notice receiver
> for replication, postgres_fdw, and dblink connections. These messages
> are now logged via ereport(), ensuring they appear in the logs with proper
> formatting and context, which improves clarity and aids in debugging.
Perhaps I'm wrong, but it seems to me that you also need to add the 
libintl link to the Makefile of each module that uses the 
libpqsrv_notice_receiver routine.
At least, without this patch, I can't build master under MacOS:

Undefined symbols for architecture x86_64:
   "_libintl_gettext", referenced from:
       _libpqsrv_notice_receiver in dblink.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see 
invocation)

-- 
regards, Andrei Lepikhov
Вложения

Re: pgsql: Log remote NOTICE, WARNING, and similar messages using ereport()

От
Álvaro Herrera
Дата:
On 2025-Jul-22, Andrei Lepikhov wrote:

> Perhaps I'm wrong, but it seems to me that you also need to add the libintl
> link to the Makefile of each module that uses the libpqsrv_notice_receiver
> routine.

That would amount to supporting translations of contrib modules, but
there's actually a bunch of additional work to do if we want to do that.
IMO the proper fix for this, at least for now, is to remove it:

  https://www.postgresql.org/message-id/202507221147.sdg2rmhbqb5z%40alvherre.pgsql

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/