Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Ведение журналов – один из эффективных способов отладки. Информация о запросе к API, например заголовки, параметры формы, параметры запроса, динамические переменные и т. д., может быть зарегистрирована в журнале для дальнейшего использования. Информация может регистрироваться локально на процессорах сообщений (только в Apigee Edge для частного облака) или на сторонних серверах, например Sumo Logic, Splunk или Loggly.
Антипаттерн
В приведенном ниже коде объект httpClient в правиле JavaScript используется для регистрации данных на сервере Sumo Logic. Это означает, что процесс регистрации фактически происходит во время обработки запроса/ответа. Такой подход неэффективен, поскольку увеличивает время обработки и общую задержку.
LogData_JS:
<!-- /antipatterns/examples/1-4.xml --> <Javascript async="false" continueOnError="false" enabled="true" timelimit="2000" name="LogData_JS"> <DisplayName>LogData_JS</DisplayName> <ResourceURL>jsc://LogData.js</ResourceURL> </Javascript>
LogData.js:
<!-- /antipatterns/examples/1-5.xml --> var sumoLogicURL = "..."; httpClient.send(sumoLogicURL); waitForComplete();
Причина в вызове waitForComplete(), который приостанавливает операции вызывающего объекта до завершения процесса регистрации. Чтобы сделать этот вызов асинхронным, его можно удалить.
Результат
- Выполнение кода регистрации с помощью правила JavaScript увеличивает задержку запроса API.
- Одновременные запросы могут перегрузить ресурсы Message Processor и, следовательно, негативно повлиять на обработку других запросов.
Рекомендации
- Используйте правило MessageLogging, чтобы передавать данные на серверы журналов или сторонние сервисы управления журналами, такие как Sumo Logic, Splunk, Loggly и т. д.
- Главное преимущество правил Message Logging заключается в том, что их можно задать в потоке Post Client Flow, который выполняется после отправки ответа в клиентское приложение.
- Определение этого правила в потоке Post Client помогает разделить ведение журнала и обработку запросов/ответов, что позволяет избежать задержек.
- Если вам нужно вести журнал с помощью JavaScript (а не с помощью описанного выше потока Post Client), это необходимо делать асинхронно. Другими словами, если вы используете объект
httpClient, убедитесь, что JavaScript НЕ реализуетwaitForComplete.