powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Логирование запросов
5 сообщений из 5, страница 1 из 1
Логирование запросов
    #39583873
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый день. Опыта настройки конкретно с PostgreSQL мало.
Требуется настроить нормально лог медленных запросов.
Настройки по включению применил:
log_duration = on
log_min_duration_statement = 1000

Есть несколько вопросов:
1) В лог пишется много записей вида:
2018-01-14 08:08:36 UTC LOG: duration: 0.025 ms
2018-01-14 08:08:36 UTC LOG: duration: 0.173 ms
2018-01-14 08:08:36 UTC LOG: duration: 0.087 ms
2018-01-14 08:08:36 UTC LOG: duration: 0.030 ms
Но текста запроса никакого нет.
В чем смысл этих сообщений и как-то можно настроить, чтоб они не писались в лог?

2) Когда настраивал лог медленных запросов, то тестировал попадание запроса так: select * from таблица.
Запрос хоть и выполнялся больше 1 секунды, в лог не попадал.
Пока не добавил условие where, запрос в логе не увидел.
Это какая-то фишка настройки?

3) В чем различия методов логирования log_destination: stderr, csvlog, syslog, and eventlog?
Внятного описания в инете не нашел, кроме советов, что если используете винду, то стоит поменять на eventlog.
Сейчас стоит stderr, и смешиваются в логе сообщения об ошибках и медленных запросах.
В идеале, конечно же, хотелось бы в отдельный файл логировать медленные запросы.

Заранее спасибо.
---
Проходя мимо разложенных граблей, ты теряешь драгоценный опыт. (с)
...
Рейтинг: 0 / 0
Логирование запросов
    #39583879
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор2018-01-14 08:08:36 UTC LOG: duration: 0.030 ms
Но текста запроса никакого нет.
авторНастройки по включению применил:
log_duration = on
https://www.postgresql.org/docs/current/static/runtime-config-logging.html
мануалCauses the duration of every completed statement to be logged. The default is off. Only superusers can change this setting.
For clients using extended query protocol, durations of the Parse, Bind, and Execute steps are logged independently .
Как попросили логировать всё, так и логируем.
Смотрите соседние строки лога плюс настройки log_line_prefix, в дефолтах маловато подробностей. Мы ставим кругом
Код: plaintext
log_line_prefix = '%m %p %u@%d from %h [vxid:%v txid:%x] [%i] '
Соответствующее одно из мест: https://github.com/postgres/postgres/blob/master/src/backend/tcop/postgres.c#L2060 Если запрос уже залогировали из-за log_duration - то пишем про него ещё раз только duration

авторВ чем различия методов логирования log_destination: stderr, csvlog, syslog, and eventlog?
В том куда (и для csv в каком формате) отправлять логи.

авторВ идеале, конечно же, хотелось бы в отдельный файл логировать медленные запросы.
Не реализовано. Сейчас можно писать только в один лог.
...
Рейтинг: 0 / 0
Логирование запросов
    #39583928
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkijавтор2018-01-14 08:08:36 UTC LOG: duration: 0.030 ms
Но текста запроса никакого нет.
авторНастройки по включению применил:
log_duration = on
https://www.postgresql.org/docs/current/static/runtime-config-logging.html
мануалCauses the duration of every completed statement to be logged. The default is off. Only superusers can change this setting.
For clients using extended query protocol, durations of the Parse, Bind, and Execute steps are logged independently .
1) Как попросили логировать всё, так и логируем.
Смотрите соседние строки лога плюс настройки log_line_prefix, в дефолтах маловато подробностей. Мы ставим кругом
Код: plaintext
log_line_prefix = '%m %p %u@%d from %h [vxid:%v txid:%x] [%i] '
Соответствующее одно из мест: https://github.com/postgres/postgres/blob/master/src/backend/tcop/postgres.c#L2060
2) Если запрос уже залогировали из-за log_duration - то пишем про него ещё раз только duration

3) авторВ чем различия методов логирования log_destination: stderr, csvlog, syslog, and eventlog?
В том куда (и для csv в каком формате) отправлять логи.

авторВ идеале, конечно же, хотелось бы в отдельный файл логировать медленные запросы.
Не реализовано. Сейчас можно писать только в один лог.
Спасибо.

Правда вопросы остались. :)
1) Я не хочу все логировать, а только запросы больше log_min_duration_statement = 1000, т.е. 1 секунды.
А записи:
2018-01-14 08:08:36 UTC LOG: duration: 0.025 ms
2018-01-14 08:08:36 UTC LOG: duration: 0.173 ms
2018-01-14 08:08:36 UTC LOG: duration: 0.087 ms
2018-01-14 08:08:36 UTC LOG: duration: 0.030 ms - судя по логу, меньше секунды!
Почему они туда попадают тогда?

2) А какой запрос повторно пишется в лог без текста запроса, последний по времени?

3) Только место расположения? А то в инете было "громко" сказано: метод логирования.
...
Рейтинг: 0 / 0
Логирование запросов
    #39583952
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte2018-01-14 08:08:36 UTC LOG: duration: 0.030 ms - судя по логу, меньше секунды!
Почему они туда попадают тогда?
Я ведь уже ответил цитатой с мануала. Потому что log_duration именно это и делает. Настройка не включает возможность делать log_min_duration_statement - они не связаны между собой и живут по принципу логического "или".

Megabyte2) А какой запрос повторно пишется в лог без текста запроса, последний по времени?
Тот который выполнял этот backend. Например, bind параметров к prepared statements. Потому что они тоже логируются гайкой log_duration.

Megabyte3) Только место расположения? А то в инете было "громко" сказано: метод логирования.
Не место расположения, а куда отправлять.
...
Рейтинг: 0 / 0
Логирование запросов
    #39583953
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MelkijMegabyte2018-01-14 08:08:36 UTC LOG: duration: 0.030 ms - судя по логу, меньше секунды!
Почему они туда попадают тогда?
Я ведь уже ответил цитатой с мануала. Потому что log_duration именно это и делает. Настройка не включает возможность делать log_min_duration_statement - они не связаны между собой и живут по принципу логического "или".

Megabyte2) А какой запрос повторно пишется в лог без текста запроса, последний по времени?
Тот который выполнял этот backend. Например, bind параметров к prepared statements. Потому что они тоже логируются гайкой log_duration.

Megabyte3) Только место расположения? А то в инете было "громко" сказано: метод логирования.
Не место расположения, а куда отправлять.
Понял. Спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Логирование запросов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]