Подтвердить что ты не робот

PostgreSQL, как посмотреть, какие запросы выполнялись

У меня на моем компьютере есть PostgreSQL DB, и у меня есть приложение, которое запускает запросы на нем.

Как я могу посмотреть, какие запросы выполнялись в моей БД?

Я использую компьютер Linux и pgadmin.

4b9b3361

Ответ 1

Включите журнал сервера:

log_statement = all

Это будет регистрировать каждый звонок на сервер базы данных.

Я бы не использовал log_statement = all на производительном сервере. Производит огромные файлы журнала.
Руководство по регистрации параметров:

log_statement (enum)

Управляет тем, какие операторы SQL регистрируются. Допустимые значения: none (off), ddl, mod и all (все операторы). [...]

Сброс параметра log_statement требует перезагрузки сервера (SIGHUP). Перезагрузка не нужна. Прочтите руководство по настройке параметров.

Не путайте журнал сервера с журналом pgAdmin. Две разные вещи!

Вы также можете посмотреть файлы журнала сервера в pgAdmin, если у вас есть доступ к файлам (может быть, это не так с удаленным сервером), и правильно настроить его. Взгляните на: Tools → Server status. Узнайте больше об окне состояния сервера в руководстве для pgAdmin III.

Я предпочитаю читать файлы журнала сервера с помощью vim (или редактора/читателя по вашему выбору).

Ответ 2

PostgreSql очень продвинут, когда связан с методами ведения журналов

Журналы хранятся в папке Installationfolder/data/pg_log folder. При этом настройки логов размещаются в файле postgresql.conf.

Формат журнала обычно устанавливается как stderr. Но формат журнала CSV рекомендуется. Чтобы включить изменение формата CSV в

log_destination = 'stderr,csvlog'   
logging_collector = on

Для регистрации всех запросов, очень полезных для новых установок, установите мин. время выполнения запроса

log_min_duration_statement = 0

Для просмотра активных запросов в вашей базе данных используйте

SELECT * FROM pg_stat_activity

Для регистрации определенных запросов установите тип запроса

log_statement = 'all'           # none, ddl, mod, all

Для получения дополнительной информации о регистрации запросов см. Журнал PostgreSql.

Ответ 3

Я нашел файл журнала в /usr/local/var/log/postgres.log на установке mac из brew.

Ответ 4

При использовании Django с postgres 10.6 ведение журнала было включено по умолчанию, и я смог просто сделать:

tail -f /var/log/postgresql/*

Ubuntu 18.04, джанго 2+, python3+

Ответ 5

В папке pg_log вы можете увидеть, включена ли конфигурация журнала в postgresql.conf с этим именем каталога журнала.