Как посмотреть логи postgresql
Перейти к содержимому

Как посмотреть логи postgresql

  • автор:

Как просмотреть журнал событий в PostgreSQL

Хочу посмотреть журнал событий, которые выполнял с БД (PostgreSQL), но что-то не могу найти команды для этого действия. Хотел бы выводить: дату, время, пользователь которой зашел и какой запрос выполнил. Кто может подсказать с этим. Знаю такую команду SELECT * FROM pg_stat_activity , но тут как-то не точно пишет

Отслеживать
JuniorLittle
задан 27 окт 2020 в 16:48
JuniorLittle JuniorLittle
191 1 1 золотой знак 3 3 серебряных знака 13 13 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Хотел бы выводить: дату, время, пользователь которой зашел и какой запрос выполнил.

А с чего вы взяли, что эти гигабайты логов вообще куда-то сохраняются по-умолчанию? Их легко в день может быть больше чем сама база по объёму.

Сначала сами явным образом настраиваете логирование, потом ищете что вам понадобилось в логах. Вероятно вы захотите включить log_connections , log_disconnections , поменять log_line_prefix (либо задать log_destination = csv чтобы получить логи в csv формате) и поставить log_statement = all

view pg_stat_activity показывает серверные процессы этого экземпляра postgresql (у вас может не быть прав на отображение всех полей этого view ). Те, которые backend_type = ‘client backend’ , — процессы обслуживающие подключённых прямо сейчас клиентов и для них, в частности, поле query — последний выполненный запрос в этой сессии (или выполняемый сейчас в зависимости от state ).

Postgresql логирование

Мне нужно сделать полное логирование sql запросов в самом постгресе; запустить pg_dump; и тогда все действия pg_dump-а будут в нем (все sql запросы). Как это сделать?

Отслеживать
Вова Благой
задан 8 мая 2020 в 11:01
Вова Благой Вова Благой
23 4 4 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Чтобы логировать все выполняемые запросы необходимо в конфигурации базы сделать

log_min_duration_statement = 0 
log_statement = 'all' 

log_min_duration_statement будет писать время выполнения запросов помимо самих запросов.

Обе настройки можно выставлять не только глобально в postgresql.conf . но и точечно на отдельные базы либо пользователей.

Where are the postgres logs?

I’m using DBeaver to connect the postgres db and want to access the logs via DBeaver. I run the command below to find log destination and got stderr as the location.

show log_destination ; 

How can I reach that file on DB app? FYI, I want all logs, not the logs that are from DBeaver.
asked Jun 10, 2021 at 15:26
cosmos-1905-14 cosmos-1905-14
1,003 5 5 gold badges 15 15 silver badges 30 30 bronze badges

5 Answers 5

On recent PostgreSQL versions, that is simple:

SELECT pg_current_logfile(); 

For old versions, proceed as follows:

    Verify that the logging collector is started:

SHOW logging_collector; 
  • If not, the location of the log depends on how PostgreSQL was started.
  • If yes, the log will be in log_directory :
SHOW log_directory; 

Since the log file is on the database server, you probably won’t be able to access it with a client tool.

answered Jun 10, 2021 at 15:35
Laurenz Albe Laurenz Albe
229k 18 18 gold badges 241 241 silver badges 310 310 bronze badges
how do I read this log?
Jan 11, 2022 at 15:49

@Telion You need shell access to the database server machine. On hosted databases, there may be other facilities.

Jan 11, 2022 at 17:23

the function pg_current_logfile() gave me the name of the file and then I was able to find it with find / -type f -name «postgresql-Tue.log» here /var/lib/pgsql/14/data/log/postgresql-Tue.log in a CentOS 7 server

Nov 15, 2022 at 18:30

In Ubuntu is under /var/log/postgresql

answered Mar 11, 2022 at 9:50
4,524 1 1 gold badge 21 21 silver badges 38 38 bronze badges

You can run pg_lsclusters .

> pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 11 main 5432 online postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log 

answered May 1, 2022 at 16:59
6,662 2 2 gold badges 43 43 silver badges 47 47 bronze badges
This worked for me when SELECT pg_current_logfile(); returned an empty value.
Feb 20, 2023 at 14:39
This is a Debian-specific thing.
Feb 18 at 23:30

To find the correct postgres log, even if it is not running as a service (If you have admin root privilage at most.):

sudo lsof | grep postgres | grep '2w' 
 lsof | grep postgres | grep '1w' 

Where 1w and 2w mean for the File Descriptors (FD) of stdout and stderr respectively. Thees FD are opened in writing only mode (w) to proper log file. It is true fol all postgres processes.

enter image description here

postgres@postgres=# \! sudo lsof | grep postgres | grep 1w 

Как посмотреть логи PostgreSQL: полное руководство для начинающих

Этот запрос прочитает первые 10 000 символов из файла журнала postgresql.log и выведет его содержимое. Вы можете изменить число 10 000 в запросе, чтобы прочитать больше или меньше символов. Помните, что для выполнения этого запроса у вас должны быть права доступа для чтения файла журнала PostgreSQL. Если у вас нет этих прав, вы можете попробовать выполнить запрос с правами суперпользователя, используя команду sudo.

Детальный ответ

Как посмотреть логи постгрес?

Логи PostgreSQL предоставляют полезную информацию о состоянии сервера, запросах и возникающих проблемах. В этой статье мы рассмотрим, как посмотреть логи PostgreSQL, чтобы узнать больше о работе базы данных и решить возникшие проблемы.

Шаг 1: Настройка параметров в конфигурационном файле

Первым шагом для включения логирования PostgreSQL является настройка параметров в конфигурационном файле postgresql.conf . Этот файл обычно располагается в директории /etc/postgresql//main/ . Откройте файл в текстовом редакторе и найдите следующие параметры:

 # Параметры, связанные с логированием logging_collector = on log_destination = 'stderr' log_directory = 'pg_log' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_statement = 'all' 

Убедитесь, что эти параметры имеют соответствующие значения, для включения логирования. Здесь мы указываем, что логи будут собираться в stderr и храниться в папке pg_log . Также, мы настраиваем формат имени лог-файла и указываем, чтобы в них были записаны все SQL-запросы ( log_statement = ‘all’ ).

Шаг 2: Перезапуск PostgreSQL

После внесения изменений в конфигурационный файл, необходимо перезапустить PostgreSQL, чтобы изменения вступили в силу. Вы можете выполнить эту команду в терминале:

 sudo service postgresql restart 

Уточните команду, если у вас установлен другой менеджер служб или если вы используете другую операционную систему.

Шаг 3: Просмотр логов

Теперь, когда логирование включено и PostgreSQL перезапущен, вы можете приступить к просмотру логов. Лог-файлы обычно находятся в директории pg_log . Вы можете перейти в эту директорию и просмотреть файлы с помощью команды ls .

 cd /var/log/postgresql ls -l 

Команда ls -l покажет список всех лог-файлов в директории вместе с информацией о размере и последнем изменении.

Шаг 4: Чтение логов

Для просмотра содержимого лог-файлов вы можете использовать команду less или любой другой текстовый редактор. Например, чтобы просмотреть последние строки лог-файла, выполните следующую команду:

 less postgresql-YYYY-MM-DD_HHMMSS.log 

Здесь YYYY-MM-DD_HHMMSS — это дата-время создания файла, который вы хотите просмотреть.

Дополнительные параметры логирования

  • log_duration — записывает продолжительность выполнения запросов
  • log_lock_waits — записывает информацию о блокировках и ожиданиях блокировок
  • log_error_verbosity — уровень подробности записи ошибок

Вы можете настроить эти параметры в файле конфигурации postgresql.conf и перезапустить PostgreSQL, как описано выше, чтобы изменения вступили в силу.

Вывод

Посмотреть логи PostgreSQL может быть очень полезно для анализа работы базы данных, поиска ошибок или отладки. В этой статье мы рассмотрели, как включить логирование в PostgreSQL, как перезапустить сервер после настройки и как просматривать лог-файлы с помощью команды в терминале. Вы также ознакомились с дополнительными параметрами для более подробной настройки логирования.

Не забывайте, что важно проверять логи регулярно, чтобы быстро выявлять и решать проблемы, возникающие в работе базы данных PostgreSQL.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *