по причине синтаксической ошибки?
Вообще какой самый просто вариант залогировать целиком запрос упавший из за синтаксичейской ошибки?
обернуть его в функцию pgplsql и там указать екзепшен, в нем сделать insert в таблицу лога
Дело в том доступа к коду нет. И нужно сначала найти полный запросы, затем будет понятно из какого приложения он "лезет"
Нет. > Вообще какой самый просто вариант залогировать целиком запрос упавший из за синтаксичейской ошибки? Они же и так в логи пишутся (при настройках по умолчанию).
Такое ощущение что пишется только часть запроса, до того момента где допущена ошибка...
Я не понимаю, о чём Вы. Можете показать пример?
2023-07-17 21:03:53 MSK [3223723-1] 123.123.123.123(47282) user@database ОШИБКА: ошибка синтаксиса в конце (символ 120) 2023-07-17 21:03:53 MSK [3223723-2] 123.123.123.123(47282) user@database ОПЕРАТОР: SELECT * FROM table_name WHERE table_column != 1 AND blablabla IN 2023-07-17 21:03:53 MSK [3223723-3] 123.123.123.123(47282) user@database ОШИБКА: текущая транзакция прервана, команды до конца блока транзакции игнорируются 2023-07-17 21:03:53 MSK [3223723-4] 123.123.123.123(47282) user@database ОПЕРАТОР: select 1 Пример ошибки, адрес клиента и прочее - вымышленные.
Ну так это и есть запрос целиком (судя по позиции в ошибке) — вот такое вот посылает клиент, что ж.
Как вы понял что это целый запрос? Не обрезанный
Вот по этому похоже: "ОШИБКА: ошибка синтаксиса в конце (символ 120)", нет?
Если взять запрос и отсчитать 120 символов, то нет, не похоже
Возможно, какие-то из них — табуляция и т.п. Тем не менее, ошибка именно та, которая была бы для этого statement. Да... а что Вам мешало проверить всё это самостоятельно (как то, что запросы не обрезаются, так и то, что получается в результате отправки этого)? ;)
В документации не вижу четкого упоминания что логируется весь запрос целиком. Поэтому появились сомнения)
Там в начале каждой продолжающей строки должна быть табуляцыя (вставленная постгресом), которую, похожэ, ваш метод копипаста превратил в 8 пробелов (или в 7). Если это вычесть -- то вроде похожэ.
Примерно на эту тему есть только log_parameter_max_length_on_error, см. https://www.postgresql.org/docs/15/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHAT , и больше ничего, насколько я знаю.
Спасибо, буду копать дальше)
log_error_verbosity = VERBOSE
Обсуждают сегодня