<ph type="x-smartling-placeholder"></ph>
Vous consultez la documentation Apigee Edge.
Accédez à la page
Documentation sur Apigee X. En savoir plus
La journalisation est l'un des moyens efficaces de déboguer les problèmes. Les informations concernant l'API telles que les en-têtes, les paramètres de formulaire, de requête, les variables dynamiques, etc. peuvent tous être consignés pour référence ultérieure. Les informations peuvent être consignées localement sur les processeurs de messages (Apigee Edge pour le cloud privé uniquement) ou à des serveurs tiers tels que Sumo Logic, Splunk ou Loggly.
Antimodèle
Dans le code ci-dessous, l'objet httpClient
d'une stratégie JavaScript est utilisé pour consigner les données dans un
Serveur Sumo Logic. Cela signifie que le processus de journalisation a effectivement lieu pendant
le traitement des requêtes et réponses. Cette approche est contre-productive, car elle augmente le temps de traitement
ce qui augmente les latences globales.
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();
Le coupable ici est l'appel à waitForComplete()
, qui suspend l'appel de l'appelant
des opérations jusqu'à la fin du processus de journalisation. Un modèle valide consiste à rendre cette fonction
en éliminant cet appel.
Impact
- L'exécution du code de journalisation par le biais de la règle JavaScript augmente la latence de l'API. requête.
- Les requêtes simultanées peuvent solliciter les ressources du processeur de messages et, par conséquent, n'affectera pas le traitement d'autres demandes.
Bonne pratique
- Utilisez la règle MessageLogging pour transférer/journaliser les données vers les serveurs de journaux ou les journaux tiers. services de gestion tels que Sumo Logic, Splunk, Loggly, etc.
- Le principal avantage de la règle de journalisation des messages est qu'elle peut être définie Le flux client, qui est exécuté une fois que la réponse est renvoyée à l'application cliente à l'origine de la demande
- Définir cette règle dans le flux Post-Client permet de séparer l'activité de journalisation et traiter les requêtes/réponses, ce qui permet d'éviter les latences.
- S'il y a une exigence spécifique ou une raison d'effectuer la journalisation via JavaScript (pas le Post
l'option de flux client mentionnée ci-dessus), elle doit être effectuée de manière asynchrone. Autrement dit,
si vous utilisez un objet
httpClient
, vous devez vous assurer que le code JavaScriptwaitForComplete
ne doit PAS être implémenté.