В Linux расположение логов зависит от дистрибутива и настройки сбора. В сборках Debian и Ubuntu файлы по умолчанию лежат в /var/log/postgresql/, в сборках на базе RHEL – в подкаталоге log внутри каталога данных. Если сбор логов выключен, вывод перехватывает systemd.
Как определить расположение
- Запросите активные значения прямо из базы:
SHOW logging_collector; SHOW log_directory; SHOW data_directory;
- При logging_collector = on собранные логи находятся в log_directory: относительный путь отсчитывается от каталога данных, абсолютный используется как есть.
- При logging_collector = off вывод идет в systemd. Имя юнита зависит от дистрибутива – в RHEL это postgresql, в Debian и Ubuntu юнит именуется по кластеру:
journalctl -u postgresql@16-main
- Для чтения активного файла в реальном времени используйте стандартные средства:
tail -f /var/log/postgresql/postgresql-16-main.log
Что учесть
Каталог с логами принадлежит пользователю postgres, поэтому для доступа нужны его права или sudo. Файлы подчиняются ротации (штатной или через logrotate), поэтому старые записи со временем архивируются или удаляются.
Логи в файловой системе подчиняются ротации и очищаются при переустановке кластера – тогда, когда нужно восстановить хронологию инцидента, их часто уже нет. PGLens накапливает детальную статистику работы вашей СУБД в отдельной базе, поэтому историческая динамика нагрузки и аннотации событий остаются доступны и после удаления файлов.