Назад | Перейти на главную страницу

Можно ли настроить отдельные файлы журналов для конкретной базы данных в Postgresql?

Обновить Я имею в виду, могу ли я иметь несколько файлов журнала для каждой базы данных? Наверное, нет, но мне было любопытно, возможно ли что-то подобное из коробки с Postgresql, или вам нужен сторонний продукт или создание собственного приложения для этого.

Я видел с другого нить ты можешь сделать это:

ALTER DATABASE your_database_name SET log_statement = 'all';

Я просматривал онлайн-документацию и нашел эту ссылку для протоколирование

с участием:

log_filename (строка) Если logging_collector включен, этот параметр устанавливает имена файлов созданных файлов журнала. Значение обрабатывается как шаблон strftime, поэтому% -escapes можно использовать для указания изменяющихся во времени имен файлов. (Обратите внимание, что если есть какие-либо% -экраны, зависящие от часового пояса, вычисление выполняется в зоне, указанной параметром log_timezone.) Поддерживаемые% -экраны аналогичны тем, которые перечислены в спецификации strftime Open Group. Обратите внимание, что системный strftime не используется напрямую, поэтому специфичные для платформы (нестандартные) расширения не работают. По умолчанию это postgresql-% Y-% m-% d_% H% M% S.log.

Если вы указываете имя файла без экранирования, вам следует запланировать использование утилиты ротации журналов, чтобы в конечном итоге избежать заполнения всего диска. В выпусках до 8.4, если не было% escape-последовательностей, PostgreSQL добавлял эпоху времени создания нового файла журнала, но это уже не так. Если в log_destination включен вывод в формате CSV, к имени файла журнала с меткой времени будет добавлено .csv, чтобы создать имя файла для вывода в формате CSV. (Если log_filename заканчивается на .log, суффикс заменяется вместо этого.)

Этот параметр можно установить только в файле postgresql.conf или в командной строке сервера.

Бу, есть ли способ настроить ведение журнала только для конкретной базы данных на сервере, который когда-либо пробовал?

Вы можете установить глобальный log_statement=none. Затем для конкретной базы данных:

ALTER DATABASE my_db_name set log_statement='all'

У меня также есть это в моей глобальной конфигурации, поэтому файл журнала показывает имя db и пользователя.
log_line_prefix = '< %m %d %u >'