Re: [Proposal] Adding Log File Capability to pg_createsubscriber

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Amit Kapila <amit.kapila16@gmail.com>
Cc: Gyan Sreejith <gyan.sreejith@gmail.com>, Peter Smith <smithpb2250@gmail.com>, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>, shveta malik <shveta.malik@gmail.com>, Shlok Kyal <shlok.kyal.oss@gmail.com>, vignesh C <vignesh21@gmail.com>, Euler Taveira <euler@eulerto.com>, "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-07T13:36:05Z
Lists: pgsql-hackers
On 01.04.26 06:56, Amit Kapila wrote:
> On Tue, Mar 31, 2026 at 5:36 PM Peter Eisentraut <peter@eisentraut.org> wrote:
>>
>> On 25.03.26 09:25, Amit Kapila wrote:
>>> On Wed, Mar 25, 2026 at 5:43 AM Gyan Sreejith <gyan.sreejith@gmail.com> wrote:
>>>>
>>>> Thank you, Kuroda-san and Chao for the suggestions and the patch. I have merged it with v18-0001, and I have fixed everything that Peter suggested.
>>>>
>>>
>>> Pushed after minor changes.
>>
>> Instead of creating a new logging API in pg_createsubscriber locally,
>> why not extend logging.c to support a log file.
>>
> 
> Few things we may want to consider if we want to use extended
> logging.c: (a) what if we want information to be written in multiple
> files (say pub/sub specific info into separate files), something like
> what pg_upgrade does, (b) what if we want to write some info to only
> one of terminal or log_file, we can probably extend generic API for
> this.

In the proposed API, you can switch the log file at any time.  And there 
could be a separate log level for file output versus terminal output.

>>   This is much simpler,
>> doesn't require caller changes, and could be reused elsewhere.  See
>> attached patches.  (The 0003 and 0004 are just some additional code
>> simplifications.)
>>
> 
> In 0004,
> -static char logdir[MAXPGPATH]; /* Subdirectory of the user specified logdir
> +static char *logdir = NULL; /* Subdirectory of the user specified logdir
> 
> At other places like pg_upgrade, we use MAXPGPATH for a similar case
> probably to have standard length on all platforms, see
> make_outputdirs() in pg_upgrade.c.

I think using MAXPGPATH is kind of deprecated and useless, certainly in 
new code.  But apart from that, note that in pg_createsubscriber.c 
itself, subscriber_dir is dynamically allocated.




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.

  7. Fix another buglet in archive_waldump.c.