Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Pencatatan log adalah salah satu cara efisien untuk masalah proses debug. Informasi tentang API seperti header, parameter formulir, parameter kueri, variabel dinamis, dll. semuanya dapat dicatat dalam log referensi di lain waktu. Informasi dapat dicatat secara lokal di Pemroses Pesan (hanya Apigee Edge untuk Private Cloud) atau ke server pihak ketiga, seperti Sumo Logic, Splunk, atau Loggly.
Anti-pola
Pada kode di bawah, objek httpClient
dalam kebijakan JavaScript digunakan untuk mencatat data ke log
server Sumo Logic. Ini berarti bahwa proses pencatatan
benar-benar berlangsung selama
pemrosesan permintaan/respons. Pendekatan ini kontraproduktif karena menambah biaya
waktu, sehingga meningkatkan latensi secara 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 adalah panggilan ke waitForComplete()
, yang menangguhkan panggilan telepon
operasi hingga proses {i>logging<i} selesai. Pola yang valid adalah membuat peristiwa
dengan menghilangkan
panggilan ini.
Dampak
- Mengeksekusi kode logging melalui kebijakan JavaScript akan menambah latensi API permintaan.
- Permintaan serentak dapat menekan resource pada Pemroses Pesan dan akibatnya dapat berpengaruh buruk pada pemrosesan permintaan lainnya.
Praktik Terbaik
- Gunakan kebijakan MessageLogging untuk mentransfer/mencatat data ke server Log atau log pihak ketiga layanan manajemen seperti Sumo Logic, Splunk, Loggly, dll.
- Keuntungan terbesar dari kebijakan Logging Pesan adalah bahwa kebijakan ini dapat ditentukan di bagian Alur Klien, yang dieksekusi setelah respons dikirim kembali ke aplikasi klien yang meminta.
- Menentukan kebijakan ini dalam alur Post Client akan membantu memisahkan aktivitas logging dan permintaan/respons untuk menghindari latensi.
- Jika ada persyaratan atau alasan khusus untuk melakukan logging melalui JavaScript (bukan melalui
alur klien yang disebutkan di atas), maka harus dilakukan secara asinkron. Dengan kata lain,
{i>SUMIF<i} memiliki daftar sel
jika menggunakan objek
httpClient
, Anda harus memastikan bahwa JavaScript melakukan TIDAK mengimplementasikanwaitForComplete