Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
Il logging è uno dei modi efficienti per eseguire il debug dei problemi. Le informazioni sull'API come intestazioni, parametri modulo, parametri di query, variabili dinamiche e così via. in un secondo momento. Le informazioni possono essere registrate localmente sui processori di messaggi (solo Apigee Edge per Private Cloud) oppure a server di terze parti come Sumo Logic, Splunk o Loggly.
Antipattern
Nel codice seguente, l'oggetto httpClient
in un criterio JavaScript viene utilizzato per registrare i dati in una
Server Sumo Logic. Ciò significa che il processo di logging avviene durante
l'elaborazione di richieste/risposte. Questo approccio è controproducente perché si aggiunge al trattamento
aumentando così le latenze complessive.
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();
Il colpevole è la chiamata a waitForComplete()
, che sospende la chiamata del chiamante
operazioni fino al completamento del processo di logging. Un pattern valido è rendere questo modello asincrono
eliminando la chiamata.
Impatto
- L'esecuzione del codice di logging tramite il criterio JavaScript aumenta la latenza dell'API richiesta.
- Le richieste in parallelo possono stressare le risorse sul processore di messaggi e, di conseguenza, pregiudicare l'elaborazione di altre richieste.
Best practice
- Utilizza il criterio MessageLogging per trasferire/registrare i dati nei server di log o in un log di terze parti servizi di gestione come Sumo Logic, Splunk, Loggly ecc.
- Il più grande vantaggio del criterio di logging dei messaggi è che può essere definito nel Flusso del client, che viene eseguito dopo che la risposta viene rinviata all'app client richiedente.
- La definizione di questo criterio nel flusso Post-Client consente di separare l'attività di logging dal l'elaborazione di richieste/risposte, evitando così le latenze.
- Se sussiste un requisito specifico o un motivo per eseguire il logging tramite JavaScript (non il modulo
l'opzione Flusso client menzionata sopra), deve essere eseguita in modo asincrono. In altre parole,
se utilizzi un oggetto
httpClient
, devi assicurarti che JavaScript NON implementarewaitForComplete