У вас були коли-небудь ситуації, коли хтось змінив рядок в таблиці і на питання, чому система стала видавати дивні результати, розробники тільки розводили руками?
А чи була ситуація, коли хтось випадково видалив таблицю і потім доводилося її відновлювати з бекапа. Адже ви робите бекапи, правда?
А іноді ще хочеться подивитися, хто з'єднався з базою. Ну і в добавок, коли щось піде не так, логи можуть допомогти вам розібратися з цією ситуацією.
Сподіваюся, кожен розуміє наскільки важливо логирование в системі і чому йому завжди відводиться така велика роль.
Отже, що потрібно щоб включити логирование в postgres?
Та власне кажучи, потрібно всього лише прописати налаштування
і перезапустити сервер.
Після цього в папці $ PGDATA з'явиться каталог pg_log, де будуть знаходитися ваші логи.
За замовчуванням, формат балки postgresql-% Y-% m -._% H% M% S.log.
Зверніть увагу на наступні параметри:
каже, що потрібно проводити ротацію логів через 1 день.
каже, що потрібно проводити ротацію лігво, як тільки розмір файлу перевищить 10 Mb.
каже, що потрібно перезаписувати логи замість додавання нових.
Наприклад, якщо хочете зберігати логи тільки тижневої давності за кожний день, то можна вказати
Загалом випадком вам потрібно визначитися з трьома речами:
- куди записувати
- коли записувати
- що записувати.
Перші два пункти здаються більш простими, ніж третій.
Що ж потрібно записувати?
Можна припустити, що розумним буде почати з наступних подій:
- хто з'єднався з базою / хто від'єднався
- зміни в базі
- ну і хотілося б мати кастомізіруемое повідомлення
Перший пункт - це налаштування
При цьому в балці ви побачите щось схоже на це:
Другий пункт - це настройка:
Взагалі є кілька різних значень: none (за замовчуванням), ddl, mod, all.
- ddl - логірует зміни схеми бази даних
- mod - теж, що ddl + операції модифікації даних над рядками в таблиці
- all - теж, що mod + все select запити до бази
Третій пункт - це настройка:
t - це timestamp
d - ім'я бази даних
r - віддалений хост і порт