Anda melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Logging adalah salah satu cara efisien untuk men-debug masalah. Informasi tentang permintaan API seperti header, parameter formulir, parameter kueri, variabel dinamis, dll. dapat dicatat untuk referensi nanti. Informasi dapat dicatat secara lokal di Message Processor (Apigee Edge untuk Private Cloud saja) atau ke server pihak ketiga seperti Sumo Logic, Splunk, atau Loggly.
Antipola
Dalam kode di bawah, objek httpClient dalam kebijakan JavaScript digunakan untuk mencatat data ke
server Sumo Logic. Artinya, proses logging sebenarnya terjadi selama pemrosesan permintaan/respons. Pendekatan ini kontraproduktif karena menambah waktu pemrosesan, sehingga meningkatkan latensi keseluruhan.
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();
Penyebabnya di sini adalah panggilan ke waitForComplete(), yang menangguhkan operasi pemanggil hingga proses logging selesai. Pola yang valid adalah membuat panggilan ini asinkron dengan menghilangkan panggilan ini.
Dampak
- Menjalankan kode logging melalui kebijakan JavaScript akan menambah latensi permintaan API permintaan.
- Permintaan serentak dapat membebani resource di Message Processor dan akibatnya memengaruhi pemrosesan permintaan lainnya secara negatif.
Praktik Terbaik
- Gunakan kebijakan MessageLogging untuk mentransfer/mencatat data ke server Log atau layanan pengelolaan log pihak ketiga manajemen seperti Sumo Logic, Splunk, Loggly, dll.
- Keuntungan terbesar dari kebijakan Message Logging adalah kebijakan ini dapat ditentukan dalam Post Client Flow, yang dijalankan setelah respons dikirim kembali ke aplikasi klien yang meminta.
- Menentukan kebijakan ini dalam Post Client flow membantu memisahkan aktivitas logging dan pemrosesan permintaan/respons sehingga menghindari latensi.
- Jika ada persyaratan atau alasan tertentu untuk melakukan logging melalui JavaScript (bukan opsi Post
Client flow yang disebutkan di atas), maka logging harus dilakukan secara asinkron. Dengan kata lain,
jika Anda menggunakan objek
httpClient, Anda harus memastikan bahwa JavaScript TIDAK menerapkanwaitForComplete