vbondarevsky / Connector

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8
Apache License 2.0
638 stars 207 forks source link

Логирование строки и тела запроса #89

Open andrewzola opened 3 years ago

andrewzola commented 3 years ago

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

vbondarevsky commented 3 years ago

Какой сценарий использования? Отладить во время разработки? Или понять почему в продакшене перестал работать запрос?

andrewzola commented 3 years ago

да, хотелось иметь диагностику на проде, когда нет доступа к другим вариантам отладки

malikov-pro commented 10 months ago

Возможно будет полезно. Организовал у себя мониторинг ошибок HTTP запросов, работает на prod, доработки:

Функция ВызватьHTTPМетод(Сессия, Метод, URL, ДополнительныеПараметры)

    ПодготовленныйЗапрос = ПодготовитьЗапрос(Сессия, Метод, URL, ДополнительныеПараметры);

    НастройкиПодключения = НастройкиПодключения(Метод, URL, ДополнительныеПараметры);

    Попытка

        Ответ = ОтправитьЗапрос(Сессия, ПодготовленныйЗапрос, НастройкиПодключения);

        Если НастройкиПодключения.РазрешитьПеренаправление И Ответ.ЭтоРедирект Тогда
            // INFO: по хорошему аутентификацию нужно привести к новых параметрам, но пока будем игнорировать.
            Ответ = ПеренаправитьЗапрос(Сессия, НастройкиПодключения, ПодготовленныйЗапрос, Ответ);
        КонецЕсли;

        Ответ.Вставить("ОписаниеОшибки", "");
    Исключение
        Ответ = Новый Структура;
        Ответ.Вставить("ОписаниеОшибки", ОписаниеОшибки());
    КонецПопытки;

    Ответ.Вставить("ПодготовленныйЗапрос", ПодготовленныйЗапрос);

    Возврат Ответ;

КонецФункции

Далее разбираю и при ошибке фиксирую в ЖР и отправляю в sentry

Процедура ОбработкаОтветаHTTPКоннектор(Ответ, ИмяФункции, МассивКодыСостояния, Отказ) Экспорт

    Если Не ПустаяСтрока(Ответ.ОписаниеОшибки) Тогда

        Отказ = Истина;

        Комментарий = Ответ.ОписаниеОшибки;
        СтруктураЗапросHTTP = нпс_Sentry.НормализоватьЗапросКоннекторHTTP(Ответ.ПодготовленныйЗапрос);
        нпс_Sentry.ДобавитьСтрокуЗапросHTTP(СтруктураЗапросHTTP, Комментарий);

        нпс_Лог.Ошибка(ИмяФункции, Комментарий);

        Возврат;

    КонецЕсли;

    Если МассивКодыСостояния.Найти(Ответ.КодСостояния) = Неопределено Тогда

        Отказ = Истина;

        Комментарий = "Ответ.КодСостояния: " + Ответ.КодСостояния
        + Символы.ПС + нпс_КоннекторHTTP.КакТекст(Ответ);

        СтруктураЗапросHTTP = нпс_Sentry.НормализоватьЗапросКоннекторHTTP(Ответ.ПодготовленныйЗапрос);
        нпс_Sentry.ДобавитьСтрокуЗапросHTTP(СтруктураЗапросHTTP, Комментарий);

        нпс_Лог.Ошибка(ИмяФункции, Комментарий);

    КонецЕсли;

КонецПроцедуры