Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Günlüğe kaydetme, sorunları ayıklamak için etkili yöntemlerden biridir. Üstbilgiler, form parametreleri, sorgu parametreleri, dinamik değişkenler vb. gibi API isteğiyle ilgili tüm bilgiler daha sonra başvurmak üzere kaydedilebilir. Bilgiler, ileti işlemcilerinde (yalnızca özel bulut için Apigee Edge) yerel olarak veya Sumo Logic, Splunk ya da Loggly gibi üçüncü taraf sunucularında günlüğe kaydedilebilir.
Antipattern
Aşağıdaki kodda, verileri bir Sumo Logic sunucusuna kaydetmek için JavaScript politikasındaki httpClient nesnesi kullanılır. Bu, günlük kaydı sürecinin aslında istek/yanıt işleme sırasında gerçekleştiği anlamına gelir. Bu yaklaşım, işleme süresini uzatarak genel gecikmeleri artırdığı için verimsizdir.
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();
Buradaki sorun, waitForComplete() işlevine yapılan çağrıdır. Bu işlev, günlük kaydı işlemi tamamlanana kadar arayanın işlemlerini askıya alır. Geçerli bir kalıp, bu çağrıyı ortadan kaldırarak bunu eşzamansız hale getirmektir.
Etki
- Günlük kaydı kodunun JavaScript politikası aracılığıyla yürütülmesi, API isteğinin gecikmesine neden olur.
- Eşzamanlı istekler, Mesaj İşleyici'deki kaynakları zorlayabilir ve sonuç olarak diğer isteklerin işlenmesini olumsuz etkileyebilir.
En İyi Uygulama
- Verileri günlük sunucularına veya Sumo Logic, Splunk, Loggly gibi üçüncü taraf günlük yönetimi hizmetlerine aktarmak/günlüğe kaydetmek için MessageLogging politikasını kullanın.
- İleti Günlüğü politikasının en büyük avantajı, yanıt isteyen istemci uygulamasına geri gönderildikten sonra yürütülen İstemci Sonrası Akış'ta tanımlanabilmesidir.
- Bu politikanın istemci sonrası akışta tanımlanması, günlük kaydı etkinliğinin ve istek/yanıt işlemenin ayrılmasına yardımcı olarak gecikmeleri önler.
- JavaScript aracılığıyla günlük kaydı oluşturmak için belirli bir şart veya neden varsa (yukarıda bahsedilen Post Client akışı seçeneği değil) bu işlem eşzamansız olarak yapılmalıdır. Başka bir deyişle,
httpClientnesnesi kullanıyorsanız JavaScript'inwaitForCompleteUYGULAMADIĞINDAN emin olmanız gerekir.
Daha fazla bilgi
- JavaScript politikası
- MessageLogging politikası
- Topluluk makalesi: Using httpClient from within JavaScript callout, is waitForComplete() necessary? (JavaScript açıklamasından httpClient kullanırken waitForComplete() gerekli mi?)