I have installed
PostgreSQL 10.6 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3), 64-bit
And configured:
log_filename = 'postgresql.log'
But I would like to manage log rotations by logrotate instead of internal logrotation by PostgreSQL:
#vim /etc/logrotate.d/postgresql
/var/lib/pgsql/data/log/postgresql.log {
daily
rotate 7
compress
create 0664 postgres postgres
missingok
notifempty
sharedscripts
}
Where logrotate works as expected but PostgreSQL will stop logging into the rotated /var/lib/pgsql/data/log/postgresql.log
file. The only resolution is to systemctl restart postgresql
which could be placed inside logrotate postrotate/endscript
block but I can't do it this way if this is done on critical production system.
Do you have any advice how to properly logrotate PostgreSQL log file without need of restarting PostgreSQL?
Thanks!
UPDATE: During reloading of PostgreSQL it looks for changes. I found a workaround how to achieve that PostgreSQL will start to log into rotated postgresql.log file - I need to modify config file, for example comment out/modify log_filename then reload PostgreSQL and revert changes back and reload PostgreSQL again. Because PostgreSQL looks for changes in configuration file. But I would be glad if there is another better solution than touching configuration file.