Я использую PostgreSQL (8.3) с несколькими базами данных ... Мне интересно, есть ли способ регистрировать сделанные запросы только в одной из баз (не во всех).
Или иметь один файл журнала для каждой базы данных ...
Я знаю, что могу использовать log_line_prefix = "%d"
чтобы зарегистрировать имя базы данных, а затем выполнить фильтрацию, но проблема не в этом.
Может, мне стоит использовать log_analyzer, чтобы обойти это? У вас есть какие-нибудь рекомендации ?
Спасибо
Да, это возможно, вы можете установить параметр конфигурации log_statement
на базу данных:
ALTER DATABASE your_database_name
SET log_statement = 'all';
Если вы регистрируете операторы через Postgres, у меня нет способа сделать это для каждой базы данных, о которой я знаю (за исключением написания представления, которое вызывает триггер ведения журнала для каждый стол - явно нереально).
Лучшее доступное решение - это то, что вы описали (префикс каждой строки с именем базы данных) и передать данные во что-то вроде syslog-ng
для разделения журнала запросов на каждую базу данных.
Пост-обработка файла журнала также является вариантом, но следует помнить о потенциальных проблемах (ограничения максимального размера файла ОС / файловой системы, нехватка дискового пространства) для кластеров баз данных, которые имеют большое количество запросов.
Также обратите внимание, что вы платите штраф за производительность за регистрацию всех запросов - насколько велик штраф зависит от того, насколько велики запросы ...