Обсуждение: rotating log files and adding timestamps to postgres logs

Поиск
Список
Период
Сортировка

rotating log files and adding timestamps to postgres logs

От
Kenny W Drobnack
Дата:

I’m working with an application running on PostgreSQL 7.4.17 on RedHat Enterprise Linux.  When asked to troubleshoot a problem, I found out the script that starts the PostgreSQL server (/etc/rc.d/init.d/postgresql) was logging to /dev/null  To try to fix this, I changed PGLOG=/dev/null to

 

PGLOG=”| /usr/sbin/rotatelogs /var/log/pgsql 86400”

 

Similar to what is detailed here: http://www.postgresql.org/docs/8.1/interactive/logfile-maintenance.html

 

When I restarted the server it caused an error that the file “| /usr/sbin/rotatelogs /var/log/pgsql 86400” I made sure rotatelogs is installed, available, and working.

 

Is this a setup that only works with new versions of PostgreSQL?  As far as I know upgrading is not an option and syslog is not available for use.  Any suggestions to get log rotation working?

 

On a related note, I’m currently just doing “PGLOG=/var/log/pgsql”.  It is working, but there are no timestamps in the file except for when the database was restarted.  Any configuration option that can be changed to get timestamps in the log file?

 

 

 


This communication is for informational purposes only. It is not intended as an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any comments or statements made herein do not necessarily reflect those of JPMorgan Chase & Co., its subsidiaries and affiliates. This transmission may contain information that is privileged, confidential, legally privileged, and/or exempt from disclosure under applicable law. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution, or use of the information contained herein (including any reliance thereon) is STRICTLY PROHIBITED. Although this transmission and any attachments are believed to be free of any virus or other defect that might affect any computer system into which it is received and opened, it is the responsibility of the recipient to ensure that it is virus free and no responsibility is accepted by JPMorgan Chase & Co., its subsidiaries and affiliates, as applicable, for any loss or damage arising in any way from its use. If you received this transmission in error, please immediately contact the sender and destroy the material in its entirety, whether in electronic or hard copy format. Thank you. Please refer to http://www.jpmorgan.com/pages/disclosures for disclosures relating to European legal entities.

Re: rotating log files and adding timestamps to postgres logs

От
Tom Lane
Дата:
Kenny W Drobnack <kenny.w.drobnack@jpmchase.com> writes:
> I'm working with an application running on PostgreSQL 7.4.17 on RedHat
> Enterprise Linux.

You mean Red Hat's RHEL-4 packaging, or somebody else's?

> When asked to troubleshoot a problem, I found out
> the script that starts the PostgreSQL server
> (/etc/rc.d/init.d/postgresql) was logging to /dev/null

Yeah, not the best solution :-(.  Later versions of that script do better.

> To try to fix this, I changed PGLOG=/dev/null to
> PGLOG="| /usr/sbin/rotatelogs /var/log/pgsql 86400"

That's not going to work in any shell I know about.  You'd have to
actually tweak the script a bit, along the lines of

    $SU -l postgres -c "$PGENGINE/postmaster -p ${PGPORT} -D '${PGDATA}' ${PGOPTS} &" >> $PGLOG 2>&1 < /dev/null

becomes

    $SU -l postgres -c "$PGENGINE/postmaster -p ${PGPORT} -D '${PGDATA}' ${PGOPTS} &" 2>&1 < /dev/null |
/usr/sbin/rotatelogs/var/log/pgsql 86400 

> On a related note, I'm currently just doing "PGLOG=/var/log/pgsql".
> It is working, but there are no timestamps in the file except for when
> the database was restarted.  Any configuration option that can be
> changed to get timestamps in the log file?

Look at log_line_prefix (I think 7.4 had that, though it's a long time
ago...)

            regards, tom lane

Re: rotating log files and adding timestamps to postgres logs

От
Kenny W Drobnack
Дата:
You were close, Tom.  The option is 

log_timestamp = true 

in the postgresql.conf file.  log_line_prefix is new as of version 8.0.



> but there are no timestamps in the file except for when
> the database was restarted.  Any configuration option that can be
> changed to get timestamps in the log file?

Look at log_line_prefix (I think 7.4 had that, though it's a long time
ago...)

            regards, tom lane
This communication is for informational purposes only. It is not
intended as an offer or solicitation for the purchase or sale of
any financial instrument or as an official confirmation of any
transaction. All market prices, data and other information are not
warranted as to completeness or accuracy and are subject to change
without notice. Any comments or statements made herein do not
necessarily reflect those of JPMorgan Chase & Co., its subsidiaries
and affiliates.

This transmission may contain information that is privileged,
confidential, legally privileged, and/or exempt from disclosure
under applicable law. If you are not the intended recipient, you
are hereby notified that any disclosure, copying, distribution, or
use of the information contained herein (including any reliance
thereon) is STRICTLY PROHIBITED. Although this transmission and any
attachments are believed to be free of any virus or other defect
that might affect any computer system into which it is received and
opened, it is the responsibility of the recipient to ensure that it
is virus free and no responsibility is accepted by JPMorgan Chase &
Co., its subsidiaries and affiliates, as applicable, for any loss
or damage arising in any way from its use. If you received this
transmission in error, please immediately contact the sender and
destroy the material in its entirety, whether in electronic or hard
copy format. Thank you.

Please refer to http://www.jpmorgan.com/pages/disclosures for
disclosures relating to European legal entities.

Re: rotating log files and adding timestamps to postgres logs

От
Kenny W Drobnack
Дата:
Tom,
    Thanks for the speedy reply.  This is the official RedHat RHEL-4 package.  The full package name is
postgresql-server-7.4.17-1.RHEL4.1.x86_64
    Your suggested way to do log rotation looks like it will work. Hopefully we'll be able to upgrade to 8.x soon. Log
rotationis built-in now, correct?
 
    Log_line_prefix looks like what I need, but most of the documentation I've seen on it is for the 8.x series or
workingwith syslog.  I'll try some things out and let you know if I hit any more snags. Thanks again.
 


-----Original Message-----
From: Tom Lane [mailto:tgl@sss.pgh.pa.us] 
Sent: Monday, June 01, 2009 1:59 PM
To: Kenny W Drobnack
Cc: pgsql-admin@postgresql.org
Subject: Re: [ADMIN] rotating log files and adding timestamps to postgres logs 

Kenny W Drobnack <kenny.w.drobnack@jpmchase.com> writes:
> I'm working with an application running on PostgreSQL 7.4.17 on RedHat
> Enterprise Linux.

You mean Red Hat's RHEL-4 packaging, or somebody else's?

> When asked to troubleshoot a problem, I found out
> the script that starts the PostgreSQL server
> (/etc/rc.d/init.d/postgresql) was logging to /dev/null

Yeah, not the best solution :-(.  Later versions of that script do better.

> To try to fix this, I changed PGLOG=/dev/null to
> PGLOG="| /usr/sbin/rotatelogs /var/log/pgsql 86400"

That's not going to work in any shell I know about.  You'd have to
actually tweak the script a bit, along the lines of

    $SU -l postgres -c "$PGENGINE/postmaster -p ${PGPORT} -D '${PGDATA}' ${PGOPTS} &" >> $PGLOG 2>&1 < /dev/null

becomes

    $SU -l postgres -c "$PGENGINE/postmaster -p ${PGPORT} -D '${PGDATA}' ${PGOPTS} &" 2>&1 < /dev/null |
/usr/sbin/rotatelogs/var/log/pgsql 86400
 

> On a related note, I'm currently just doing "PGLOG=/var/log/pgsql".
> It is working, but there are no timestamps in the file except for when
> the database was restarted.  Any configuration option that can be
> changed to get timestamps in the log file?

Look at log_line_prefix (I think 7.4 had that, though it's a long time
ago...)

            regards, tom lane
This communication is for informational purposes only. It is not
intended as an offer or solicitation for the purchase or sale of
any financial instrument or as an official confirmation of any
transaction. All market prices, data and other information are not
warranted as to completeness or accuracy and are subject to change
without notice. Any comments or statements made herein do not
necessarily reflect those of JPMorgan Chase & Co., its subsidiaries
and affiliates.

This transmission may contain information that is privileged,
confidential, legally privileged, and/or exempt from disclosure
under applicable law. If you are not the intended recipient, you
are hereby notified that any disclosure, copying, distribution, or
use of the information contained herein (including any reliance
thereon) is STRICTLY PROHIBITED. Although this transmission and any
attachments are believed to be free of any virus or other defect
that might affect any computer system into which it is received and
opened, it is the responsibility of the recipient to ensure that it
is virus free and no responsibility is accepted by JPMorgan Chase &
Co., its subsidiaries and affiliates, as applicable, for any loss
or damage arising in any way from its use. If you received this
transmission in error, please immediately contact the sender and
destroy the material in its entirety, whether in electronic or hard
copy format. Thank you.

Please refer to http://www.jpmorgan.com/pages/disclosures for
disclosures relating to European legal entities.