Re: Log prefix missing for subscriber log messages received from publisher

Fujii Masao <masao.fujii@oss.nttdata.com>

From: Fujii Masao <masao.fujii@oss.nttdata.com>
To: vignesh C <vignesh21@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-07-14T16:06:11Z
Lists: pgsql-hackers

On 2025/04/15 13:37, vignesh C wrote:
> Hi,
> 
> Currently, when a warning is emitted by the publisher, the
> corresponding log message does not include the log prefix. This makes
> it harder to correlate such messages with other log entries. For
> example, in a simulated error scenario where directory removal fails,
> the notice message lacks the standard log prefix, as shown below:
> 2025-03-18 16:44:36.071 IST [196901] LOG:  logical replication table
> synchronization worker for subscription "sub1", table "t1" has
> finished
> WARNING:  could not remove directory
> "pg_replslot/pg_16398_sync_16387_7483106341004194035.tmp"
> 
> In this case, the WARNING line does not include the usual timestamp
> information, making it harder to trace.
> 
> To address this, we can have a custom notice processor for WAL
> receiver connections—similar to what's done in the attached patch.

I like this idea.

If this issue also exists other features like dblink or postgres_fdw
connecting to remote PostgreSQL servers, it might be worth applying
a similar improvement there as well.

+notice_processor(void *arg, const char *message)
+{
+	elog(LOG, "%s", message);

Should ereport() be used here instead?

Also, would it be better to add some context before %s, for example,
something like "received message from the primary:"? Without that,
users might mistakenly think the message originated from the local server.

Regards,

-- 
Fujii Masao
NTT DATA Japan Corporation




Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Remove translation marker from libpq-be-fe-helpers.h.

  2. Log remote NOTICE, WARNING, and similar messages using ereport().

  3. Remove translation markers from libpq-be-fe-helpers.h