The following bug has been logged online:
Bug reference: 5935
Logged by: Brad Nicholson
Email address: bnicholson@hp.com
PostgreSQL version: 9.0.3
Operating system: CentOS Release 5.5
Description: Log lotation not working for default log format
Details:
PostgreSQL 9.0.3 on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC)
4.1.2 20080704 (Red Hat 4.1.2-48), 64-bit
CentOS release 5.5 (Final)
(using the standard PG package)
The logfile will not rotate if the log_filename is set to postgresql-%a.log,
which is the default setting after an initdb on my platform.
I have tested this by setting log_rotation_size and exceeding that threshold
and manually trying to rotate the logs with SELECT pg_rotate_logfile().
Both fail to rotate the log file.
Manual Rotate:
[postgres@pg1 pgdata]$ ls -al logs/
total 24
drwxr-xr-x 2 postgres postgres 4096 Mar 17 13:11 .
drwxr-xr-x 4 postgres postgres 4096 Mar 17 13:08 ..
-rw------- 1 postgres postgres 150 Mar 17 13:11 postgresql-Thu.log
[postgres@pg1 pgdata]$ psql -p 6432 -c "show log_filename;" postgres
log_filename
-------------------
postgresql-%a.log
(1 row)
[postgres@pg1 pgdata]$ psql -p 6432 -c "SELECT pg_rotate_logfile()"
postgres
pg_rotate_logfile
-------------------
t
(1 row)
[postgres@pg1 pgdata]$ ls -al logs/
total 24
drwxr-xr-x 2 postgres postgres 4096 Mar 17 13:11 .
drwxr-xr-x 4 postgres postgres 4096 Mar 17 13:08 ..
-rw------- 1 postgres postgres 150 Mar 17 13:11 postgresql-Thu.log
Size based automatic rotation:
[postgres@pg1 pgdata]$ psql -p 6432 -c "show log_rotation_size;" postgres
log_rotation_size
-------------------
1MB
(1 row)
<generate some pgbench traffic with full statement logging>
[postgres@pg1 pgdata]$ ls -thl logs/
total 3.2M
-rw------- 1 postgres postgres 3.2M Mar 17 13:24 postgresql-Thu.log
If I switch the log_filename to something more specific like
postgresql-%Y-%m-%d_%H_%M_%S.log - the logfile rotates.