[Proposal] Adding Log File Capability to pg_createsubscriber

Gyan Sreejith <gyan.sreejith@gmail.com>

From: Gyan Sreejith <gyan.sreejith@gmail.com>
To: pgsql-hackers@lists.postgresql.org
Cc: vignesh C <vignesh21@gmail.com>
Date: 2025-12-09T22:16:40Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. pg_createsubscriber: Don't use MAXPGPATH

  2. pg_createsubscriber: Remove separate logfile_open() function

  3. pg_createsubscriber: Use logging.c log file callback

  4. Add log file support to logging.c

  5. pg_createsubscriber: Add -l/--logdir option to redirect output to files.

  6. pg_createsubscriber: Introduce module-specific logging functions.

Attachments

Background:

   -

   pg_createsubscriber currently outputs all messages (internal validation
   messages, standby server start/stop logs, recovery progress output, and
   output from utilities) directly to the console. As a result, users may find
   debugging and handling errors difficult. It would be more convenient if
   messages were separated and stored in different log files. There is already
   a similar implementation in pg_upgrade.

Proposed Solution:

   -

   Based on issues mentioned previously, I would like to propose a new
   argument -l <logdir> which can be specified for pg_createsubscriber. Using
   it would create the following log files:
   -

      logdir/pg_createsubscriber_server.log which captures all logs related
      to starting and stopping the standby server.
      -

      logdir/pg_createsubscriber_resetwal.log which captures the output of
      pg_resetwal
      -

      logdir/pg_createsubscriber_internal.log which captures internal
      diagnostic output from pg_createsubscriber (validations, checks, etc.)

Overall, this proposed solution could make the pg_createsubscriber command
output messages more organized. The command would be easier to use as users
will only have to read individual log files rather than parse through lots
of possibly irrelevant output messages. I have attached the patch for this
change.

Special thanks to Vignesh C. for his offlist guidance on this project.


Regards, Gyan Sreejith