Очистка логов в PostgreSQL решается не удалением файлов вручную, а настройкой ротации: сервер сам ограничивает срок хранения и перезаписывает старые файлы. Если сбор логов включен, удалять файлы вручную не стоит: PostgreSQL продолжит писать в уже удаленный файл, и место на диске не освободится до перезапуска сервера.
Как настроить автоматическую очистку
- Включите ротацию с перезаписью в postgresql.conf. Циклический шаблон имени плюс усечение при ротации дают ограниченный набор файлов, которые перезаписываются по кругу:
log_filename = 'postgresql-%a.log' log_truncate_on_rotation = on log_rotation_age = 1d log_rotation_size = 0
- Примените изменения без перезапуска:
SELECT pg_reload_conf();
Важные нюансы
Усечение при log_truncate_on_rotation = on срабатывает только при ротации по времени – при перезапуске сервера и ротации по размеру файл дописывается, а не обнуляется. Шаблон %a (день недели) хранит логи за 7 суток и перезаписывает их на следующей неделе; для другого срока меняется маска имени. Если logging_collector = off и вывод идет в syslog или systemd, очисткой управляет система (logrotate, journald), а не PostgreSQL.