Deleting old log files is _NOT_ a Postgresql problem. Bash and crontab work perfectly for me.
(Could I have done a one-liner like Junwang? Sure, but I like the obvious and explicit.)
declare -i Weeks=8
declare -i Days=$Weeks*7
declare Dir=/var/log/postgresql
declare OldFiles=$(find $Dir/p*-*log* -mtime +$Days | sort) if [ -z "$OldFiles" ]; then echo "No old files to delete in ${Dir}." else rm -v $OldFiles fi
On Tue, 2025-01-28 at 09:57 +0000, Paul Brindusa wrote: > Good morning everyone, > > Before I get on with today's problem, I would like to say how much I appreciate this community and everything that you do for end users. > > In today's problem I would like to understand if the following lines in our config handle the log rotation for our clusters? > > log_checkpoints: on > logging_collector: on > log_truncate_on_rotation: on > log_rotation_age: 1d > log_rotation_size: 1GB > log_error_verbosity: verbose > > I have been deleting the logs manually for the last month, since I am confused how the log collector rotates them. > > Am looking to delete logs older than 180 days. What are we doing wrong in the config?
It all depends on how you configured "log_filename".
If the setting is "postgresql-%a.log" or "postgresql-%d.log", PostgreSQL will recycle the old log files once a week or once a month.
If the setting is the default "postgresql-%Y-%m-%d_%H%M%S.log", the same log file name will never be reused, and there will be no log rotation.