Re: Postgres server output logfile - Mailing list pgsql-general

From Giles Lean
Subject Re: Postgres server output logfile
Date
Msg-id 12650.1043966017@hpchs.cup.hp.com
Whole thread Raw
In response to Re: Postgres server output logfile  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
Tom Lane wrote:

> Unfortunately not.  The recommended procedure for production servers is
> not to send the postmaster's stdout/stderr directly to a disk file, but
> to pipe it into some script that rotates the output.  There's a usable
> script in the Apache distribution, or you can roll your own with little
> effort. ...

There was some interest in such logging programs a while back, and I
wrote this one:

    ftp://ftp.nemeton.com.au/pub/src/logwrite-1.0alpha.tar.gz

I've attached a message I sent out when I packaged that up.  I had no
time back then (2001, yikes) and didn't receive any comments or bug
reports.

If there is interest now, then I'll update the documentation, format
the code per the PostgreSQL coding standards and offer it again.

A patch to the postmaster so that it starts the log program and can
re-start it if someone kills it would improve robustness even further,
but 'kill -9' on the postmaster is bad, and so is 'kill -9' on the log
program. :-)

Regards,

Giles


Hi Peter,

> I've been playing with a little program I wrote whose sole purpose is to
> write its stdin to a file and close and reopen that file when it receives
> a signal.  I figured this could work well when integrated transparently
> into pg_ctl.
>
> So, is log rotation a concern?  Is this a reasonable solution?  Other
> ideas?

There was a discussion of this over a year ago.  After I contributed
to the discussion Tom Lane suggested I write something, and in the
tradition of software development I did so but never quite finished it
... I got to the point that it works for me, then got distracted
before completing a test suite.

You may well prefer your own code, but this one supports rotation on
size and/or time basis as well as on receipt of SIGHUP, and places a
timestamp on each line written. It's also pretty careful about errors,
which is one of the things that was disliked about the Apache program
last time it was discussed.

I am happy to contribute the code using the standard PostgreSQL
license if it's wanted.  (If anyone wants it under a BSD license or
GPL for another purpose that's fine too.)

I use the code on HP-UX, and developed it on NetBSD.  There shouldn't
be too many portability problems lurking, other than the usual hassles
of what % escape to use in printf() for off_t.  I doubt anyone wants
log files larger than a couple of GB anyway? :-)

ftp://ftp.nemeton.com.au/pub/src/logwrite-1.0alpha.tar.gz

> (No Grand Unified Logging Solutions please.  And no, "use syslog" doesn't
> count.)

<grin>

One improvement I suggest is that the postmaster be taught to start
(and restart if necessary) the log program.  This avoids fragile
startup scripts and also avoids taking down PostgreSQL if someone
sends the wrong signal to the log program.

Cheers,

Giles


pgsql-general by date:

Previous
From: Greg Stark
Date:
Subject: Re: How to estimate size of a row and therefore how much progress this query has made
Next
From: "news.verizon.net"
Date:
Subject: Problem starting a session