অ্যান্টিপ্যাটার্ন: JavaScript নীতি ব্যবহার করে তৃতীয় পক্ষের সার্ভারে ডেটা লগ করুন

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

লগিং সমস্যাগুলি ডিবাগ করার জন্য একটি কার্যকর উপায়। API অনুরোধ সম্পর্কে তথ্য যেমন শিরোনাম, ফর্ম প্যারাম, ক্যোয়ারী প্যারাম, ডায়নামিক ভেরিয়েবল, ইত্যাদি সবই পরবর্তী রেফারেন্সের জন্য লগ করা যেতে পারে। তথ্যটি স্থানীয়ভাবে মেসেজ প্রসেসরগুলিতে (শুধুমাত্র ব্যক্তিগত ক্লাউডের জন্য এপিজি এজ) বা সুমো লজিক, স্প্লঙ্ক বা লগলির মতো তৃতীয় পক্ষের সার্ভারগুলিতে লগ ইন করা যেতে পারে।

অ্যান্টিপ্যাটার্ন

নীচের কোডে, জাভাস্ক্রিপ্ট নীতির httpClient অবজেক্টটি একটি সুমো লজিক সার্ভারে ডেটা লগ করতে ব্যবহৃত হয়। এর মানে হল যে লগিংয়ের প্রক্রিয়াটি আসলে অনুরোধ/প্রতিক্রিয়া প্রক্রিয়াকরণের সময় সঞ্চালিত হয়। এই পদ্ধতিটি বিপরীতমুখী কারণ এটি প্রক্রিয়াকরণের সময়কে যোগ করে, যার ফলে সামগ্রিক বিলম্ব বৃদ্ধি পায়।

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();

এখানে অপরাধী হল waitForComplete() এর কল, যা লগিং প্রক্রিয়া সম্পূর্ণ না হওয়া পর্যন্ত কলারের ক্রিয়াকলাপ স্থগিত করে। একটি বৈধ প্যাটার্ন হল এই কলটিকে বাদ দিয়ে অ্যাসিঙ্ক্রোনাস করা।

প্রভাব

  • জাভাস্ক্রিপ্ট নীতির মাধ্যমে লগিং কোড নির্বাহ করা API অনুরোধের লেটেন্সি যোগ করে।
  • সমসাময়িক অনুরোধগুলি বার্তা প্রসেসরের সংস্থানগুলিকে চাপ দিতে পারে এবং ফলস্বরূপ অন্যান্য অনুরোধগুলির প্রক্রিয়াকরণে বিরূপ প্রভাব ফেলতে পারে।

সর্বোত্তম অনুশীলন

  • লগ সার্ভারে ডেটা স্থানান্তর/লগ করতে মেসেজলগিং নীতি ব্যবহার করুন বা তৃতীয় পক্ষের লগ ম্যানেজমেন্ট পরিষেবা যেমন সুমো লজিক, স্প্লঙ্ক, লগলি, ইত্যাদি।
  • বার্তা লগিং নীতির সবচেয়ে বড় সুবিধা হল এটি পোস্ট ক্লায়েন্ট ফ্লোতে সংজ্ঞায়িত করা যেতে পারে, যা অনুরোধকারী ক্লায়েন্ট অ্যাপে প্রতিক্রিয়া ফেরত পাঠানোর পরে কার্যকর হয়।
  • পোস্ট ক্লায়েন্ট প্রবাহে এই নীতি সংজ্ঞায়িত করা লগিং কার্যকলাপ এবং অনুরোধ/প্রতিক্রিয়া প্রক্রিয়াকরণকে আলাদা করতে সাহায্য করে যার ফলে বিলম্ব এড়ানো যায়।
  • যদি জাভাস্ক্রিপ্ট (উপরে উল্লিখিত পোস্ট ক্লায়েন্ট ফ্লো বিকল্পটি নয়) এর মাধ্যমে লগিং করার একটি নির্দিষ্ট প্রয়োজনীয়তা বা কারণ থাকে, তবে এটি অ্যাসিঙ্ক্রোনাসভাবে করা দরকার। অন্য কথায়, আপনি যদি একটি httpClient অবজেক্ট ব্যবহার করেন, তাহলে আপনাকে নিশ্চিত করতে হবে যে JavaScript waitForComplete বাস্তবায়ন না করে

আরও পড়া