Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Logowanie to jeden z efektywnych sposobów debugowania problemów. Informacje o żądaniu do interfejsu API, takie jak nagłówki, parametry formularza, parametry zapytania, zmienne dynamiczne itp., można rejestrować w celu późniejszego wglądu. Te informacje mogą być logowane lokalnie przez procesory wiadomości (tylko Apigee Edge dla Private Cloud) lub serwery innych firm, takie jak Sumo Logic, Splunk lub Loggly.
Antywzór
W poniższym kodzie obiekt httpClient
w zasadzie JavaScript służy do logowania danych na serwerze Sumo Logic. Oznacza to, że proces logowania odbywa się podczas przetwarzania żądań i odpowiedzi. Takie podejście ma skutek odwrotny do zamierzonego, ponieważ wydłuża czas przetwarzania i zwiększa ogólne opóźnienia.
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();
Wiedzą tu jest wywołanie metody waitForComplete()
, które zawiesza operacje elementu wywołującego do czasu zakończenia procesu logowania. Prawidłowy wzór musi być asynchroniczny, eliminując to wywołanie.
Wpływ
- Wykonanie kodu logowania za pomocą zasady JavaScriptu zwiększa opóźnienie żądania do interfejsu API.
- Jednoczesne żądania mogą obciążać zasoby procesora wiadomości, w związku z czym niekorzystnie wpływają na przetwarzanie innych żądań.
Sprawdzona metoda
- Użyj zasady MessageLogging, aby przenieść/logować dane do serwerów logów lub usług zarządzania logami innych firm, takich jak Sumo Logic, Splunk, Loggly itp.
- Największą zaletą zasady logowania wiadomości jest to, że można ją zdefiniować w procesie tworzenia klienta poczty, który jest wykonywany po wysłaniu odpowiedzi z powrotem do żądającej aplikacji klienckiej.
- Zdefiniowanie tej zasady w procesie tworzenia konta klienta pomaga oddzielić aktywność związaną z logowaniem od przetwarzania żądań i odpowiedzi, co pozwala uniknąć opóźnień.
- Jeśli jest określony wymóg lub powód do logowania za pomocą JavaScriptu (a nie w przypadku wspomnianej powyżej opcji przepływu po klienta), musisz to zrobić asynchronicznie. Inaczej mówiąc, jeśli używasz obiektu
httpClient
, musisz upewnić się, że JavaScript NIE implementujewaitForComplete
Więcej informacji
- Zasady dotyczące JavaScriptu
- Zasada MessageLogging
- Artykuł na temat społeczności: Czy trzeba użyć protokołu httpClient z objaśnienia JavaScriptu?