FreeBSD 8.2, postgres 8.3
Иначально он спаммит в syslog, что порой мешает.
Открываем конфиг, ищем log_destination
vi /usr/local/pgsql/data/postgresql.conf
Видим
log_destination = 'syslog'
У нас 2 варианта - использовать перенаправление вывода через сам syslog или сказать постгресу использовать отдельный файл. Сделаем второе.
Комментируем строку про syslog.
Но указать просто файл не получится - ругнётся
LOG: unrecognized "log_destination" key word: "/var/log/pgsql_log"
FATAL: invalid value for parameter "log_destination": "/var/log/pgsql_log"
Потому что это задаётся чуть другими опциями.
log_directory = '/var/log/pgsql'
log_filename = 'pgsql_log'
В версии 8.1 также надо было выставить redirect_stderr, но в 8.3 такой опции уже нет - теперь это logging_collector (см), выставляем = on
Обращаем внимание на одинарные кавычки - с двойными работать не будет.
Не надо пытаться указать /var/log/messages - ничего хорошего не выйдет.
Также не получится просто указать на файл в /var/log - для создания не хватит прав. Надо создать каталог и дать ему 777 или владельцем пользователя, от которого работает постгрес.
При работе в кластере - у каждого процесса должен быть свой лог-файл, использовать 1 на всех недопустимо.
Также я добавляю
log_rotation_size = 10MB
log_rotation_age = 1d
Это позволит не разрастись логам до огромных величин. (Если делать через syslog, не забыть настроить что-то подобное для rotatelogs)
> ls -la /var/log/pgsql/
total 13
drwxrwxrwx 2 root wheel 3 Sep 15 15:00 .
drwxr-xr-x 6 root wheel 277 Sep 15 15:00 ..
-rw------- 1 pgsql wheel 822 Sep 15 15:07 pgsql_log.1316084441
Работает исправно.
Основные грабли описаны тут:
http://archives.postgresql.org/pgsql-admin/2007-02/msg00342.php
Дока на 8.3
http://www.postgresql.org/docs/8.3/static/logfile-maintenance.html
Описание всех ключей про логгинг
http://www.postgresql.org/docs/8.3/static/runtime-config-logging.html
(при необходимости вместо 8.3 подставить нужную версию, в том числе на 9.0)
Комментариев нет:
Отправить комментарий