Re: pg_ctl patch to integrate apache's rotatelogs - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: pg_ctl patch to integrate apache's rotatelogs
Date
Msg-id 200405142000.i4EK0qT11280@candle.pha.pa.us
Whole thread Raw
In response to Re: pg_ctl patch to integrate apache's rotatelogs  (Andrew Hammond <ahammond@ca.afilias.info>)
Responses Re: pg_ctl patch to integrate apache's rotatelogs
List pgsql-patches
Andrew Hammond wrote:
> ~From what I've seen, I have to disagree. The documentation says to "pipe
> the stderr of the postmaster to some type of log rotation program."
> which is pretty vague. It then includes an _incorrect_ example of how to
> use logrotate (logrotate rotates existing log files, if you pipe output
> into it, your postmaster will block). There are no explicit, working
> examples of how to configure the various log rotation options.

Ouch.  How long has that documentation been wrong?  We have pointed
folks to that section of the docs tons of times, and no one mentioned
that "logrotate" is really "rotatelogs", and that it is missing
parameters?

I have applied the following patch to document rotatelogs properly.

Also, the pg_ctl man page should mention rotatelogs too, and the patch
includes that.

> The idea here is to make it as easy as possible to use rotatelogs. The
> script doesn't even test for existance of rotatelogs unless you
> explicitly try to use it. And then, if it can't find rotatelogs, it says
> so explicitly. I think it's an extreemly low risk patch,

This is a powerful argument.  I think the big reason we have avoided
rotatelogs integration is the desire not to favor a particular log
rotate solution.   However, we have syslog hooks, so maybe rotatelogs
hooks are OK.

Comments?

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: maintenance.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/maintenance.sgml,v
retrieving revision 1.33
diff -c -c -r1.33 maintenance.sgml
*** maintenance.sgml    5 Apr 2004 03:02:03 -0000    1.33
--- maintenance.sgml    14 May 2004 19:57:46 -0000
***************
*** 461,467 ****
     you can send a <literal>SIGHUP</literal> signal to the
     <application>syslog</> daemon whenever you want to force it to
     start writing a new log file.  If you want to automate log
!    rotation, the <application>logrotate</application> program can be
     configured to work with log files from
     <application>syslog</application>.
    </para>
--- 461,467 ----
     you can send a <literal>SIGHUP</literal> signal to the
     <application>syslog</> daemon whenever you want to force it to
     start writing a new log file.  If you want to automate log
!    rotation, the <application>rotatelogs</application> program can be
     configured to work with log files from
     <application>syslog</application>.
    </para>
***************
*** 484,495 ****
     pipe command:

  <programlisting>
! pg_ctl start | logrotate
  </programlisting>

     The <productname>PostgreSQL</> distribution doesn't include a
     suitable log rotation program, but there are many available on the
!    Internet. For example, the <application>logrotate</application>
     tool included in the <productname>Apache</productname> distribution
     can be used with <productname>PostgreSQL</productname>.
    </para>
--- 484,495 ----
     pipe command:

  <programlisting>
! pg_ctl start | rotatelogs /var/log/pgsql_log 86400
  </programlisting>

     The <productname>PostgreSQL</> distribution doesn't include a
     suitable log rotation program, but there are many available on the
!    Internet. For example, the <application>rotatelogs</application>
     tool included in the <productname>Apache</productname> distribution
     can be used with <productname>PostgreSQL</productname>.
    </para>
Index: ref/pg_ctl-ref.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/pg_ctl-ref.sgml,v
retrieving revision 1.25
diff -c -c -r1.25 pg_ctl-ref.sgml
*** ref/pg_ctl-ref.sgml    29 Nov 2003 19:51:39 -0000    1.25
--- ref/pg_ctl-ref.sgml    14 May 2004 19:57:46 -0000
***************
*** 87,99 ****
     server is started in the background, and standard input is attached to
     <filename>/dev/null</filename>.  The standard output and standard
     error are either appended to a log file (if the <option>-l</option>
!    option is used), or redirected to  <application>pg_ctl</application>'s
     standard output (not standard error).  If no log file is chosen, the
     standard output of <application>pg_ctl</application> should be redirected
!    to a file or piped to another process, for example a log rotating program,
!    otherwise <command>postmaster</command> will write its output to the controlling
!    terminal (from the background) and will not leave the shell's
!    process group.
    </para>

    <para>
--- 87,99 ----
     server is started in the background, and standard input is attached to
     <filename>/dev/null</filename>.  The standard output and standard
     error are either appended to a log file (if the <option>-l</option>
!    option is used), or redirected to <application>pg_ctl</application>'s
     standard output (not standard error).  If no log file is chosen, the
     standard output of <application>pg_ctl</application> should be redirected
!    to a file or piped to another process such as a log rotating program
!    like <application>rotatelogs</>; otherwise the <command>postmaster</command>
!    will write its output to the controlling terminal (from the background)
!    and will not leave the shell's process group.
    </para>

    <para>

pgsql-patches by date:

Previous
From: Bruno Wolff III
Date:
Subject: Re: pg_ctl patch to integrate apache's rotatelogs
Next
From: Andrew Hammond
Date:
Subject: Re: pg_ctl patch to integrate apache's rotatelogs