লগিং

যেকোনো ধরনের অ্যাপ তৈরি করার সময়, আপনি প্রায়শই তথ্য লগ করতে চান যাতে ডেভেলপমেন্টের সময় ত্রুটি নির্ণয় করা যায়, গ্রাহকের সমস্যা চিহ্নিত করা যায় এবং নির্ণয় করা যায়, এবং অন্যান্য উদ্দেশ্যে।

অ্যাপস স্ক্রিপ্ট লগিংয়ের জন্য তিনটি ভিন্ন প্রক্রিয়া প্রদান করে:

  • বিল্ট-ইন অ্যাপস স্ক্রিপ্ট এক্সিকিউশন লগ । এই লগটি হালকা এবং রিয়েল টাইমে স্ট্রিম হয়, কিন্তু শুধুমাত্র অল্প সময়ের জন্য স্থায়ী হয়।

  • ডেভেলপার কনসোলে ক্লাউড লগিং ইন্টারফেস, যা লগ তৈরির পরেও অনেক দিন ধরে থাকে।

  • ডেভেলপার কনসোলের ত্রুটি প্রতিবেদন ইন্টারফেস, যা আপনার স্ক্রিপ্ট চলাকালীন ঘটে যাওয়া ত্রুটিগুলি সংগ্রহ এবং রেকর্ড করে।

নিম্নলিখিত বিভাগগুলিতে এগুলি বর্ণনা করা হয়েছে। এই প্রক্রিয়াগুলি ছাড়াও, আপনি আপনার নিজস্ব লগার কোডও তৈরি করতে পারেন যা, উদাহরণস্বরূপ, একটি লগিং স্প্রেডশিট বা JDBC ডাটাবেসে তথ্য লেখে।

অ্যাপস স্ক্রিপ্ট এক্সিকিউশন লগ ব্যবহার করুন

অ্যাপস স্ক্রিপ্টে লগ ইন করার একটি মৌলিক পদ্ধতি হল বিল্ট-ইন এক্সিকিউশন লগ ব্যবহার করা। এই লগগুলি দেখতে, সম্পাদকের শীর্ষে, এক্সিকিউশন লগ এ ক্লিক করুন। যখন আপনি কোনও ফাংশন চালান বা ডিবাগার ব্যবহার করেন, তখন লগগুলি রিয়েল টাইমে স্ট্রিম হয়।

আপনি বিল্ট-ইন এক্সিকিউশন লগে Logger অথবা console লগিং পরিষেবা ব্যবহার করতে পারেন।

এই লগগুলি ডেভেলপমেন্ট এবং ডিবাগিংয়ের সময় সহজ চেকের জন্য তৈরি করা হয় এবং খুব বেশিক্ষণ স্থায়ী হয় না।

উদাহরণস্বরূপ, এই ফাংশনটি বিবেচনা করুন:

ইউটিলস/লগিং.জিএস
/**
 * Logs Google Sheet information.
 * @param {number} rowNumber The spreadsheet row number.
 * @param {string} email The email to send with the row data.
 */
function emailDataRow(rowNumber, email) {
  console.log(`Emailing data row ${rowNumber} to ${email}`);
  const sheet = SpreadsheetApp.getActiveSheet();
  const data = sheet.getDataRange().getValues();
  const rowData = data[rowNumber - 1].join(" ");
  console.log(`Row ${rowNumber} data: ${rowData}`);
  MailApp.sendEmail(email, `Data in row ${rowNumber}`, rowData);
}

যখন এই স্ক্রিপ্টটি "2" এবং "john@example.com" ইনপুট দিয়ে চালানো হয় তখন নিম্নলিখিত লগগুলি লেখা হয়:

[১৬-০৯-১২ ১৩:৫০:৪২:১৯৩ PDT] john@example.com-এ ডেটা সারি ২ ইমেল করা হচ্ছে
[১৬-০৯-১২ ১৩:৫০:৪২:২৭১ PDT] সারি ২ এর তথ্য: খরচ ১০৩.২৪

ক্লাউড লগিং

অ্যাপস স্ক্রিপ্ট গুগল ক্লাউড প্ল্যাটফর্ম (GCP) ক্লাউড লগিং পরিষেবাতে আংশিক অ্যাক্সেসও প্রদান করে। যখন আপনার এমন লগিং প্রয়োজন যা বেশ কয়েক দিন ধরে স্থায়ী হয়, অথবা মাল্টি-ইউজার প্রোডাকশন পরিবেশের জন্য আরও জটিল লগিং সমাধানের প্রয়োজন হয়, তখন ক্লাউড লগিং হল পছন্দের পছন্দ। ডেটা ধরে রাখার জন্য ক্লাউড লগিং কোটা এবং সীমা এবং অন্যান্য কোটার বিবরণ দেখুন।

যদি আপনার আরও লগিং কোটার প্রয়োজন হয়, তাহলে আপনি একটি Google Cloud Platform কোটার অনুরোধ জমা দিতে পারেন। এর জন্য আপনার স্ক্রিপ্ট ব্যবহার করে এমন Cloud Platform প্রকল্পে অ্যাক্সেস থাকা প্রয়োজন।

ক্লাউড লগিং ব্যবহার করা

ক্লাউড লগগুলি আপনার অ্যাপস স্ক্রিপ্টের সাথে সম্পর্কিত Google ক্লাউড প্রকল্পের সাথে সংযুক্ত থাকে। আপনি অ্যাপস স্ক্রিপ্ট ড্যাশবোর্ডে এই লগগুলির একটি সরলীকৃত সংস্করণ দেখতে পারেন।

ক্লাউড লগিং এবং এর ক্ষমতার পূর্ণ ব্যবহার করতে, আপনার স্ক্রিপ্ট প্রকল্পের সাথে একটি স্ট্যান্ডার্ড গুগল ক্লাউড প্রকল্প ব্যবহার করুন। এটি আপনাকে সরাসরি GCP কনসোলে ক্লাউড লগ অ্যাক্সেস করতে দেয় এবং আপনাকে আরও দেখার এবং ফিল্টার করার বিকল্প দেয়।

লগিং করার সময়, ব্যবহারকারীর ব্যক্তিগত তথ্য, যেমন ইমেল ঠিকানা রেকর্ড করা এড়িয়ে চলা একটি ভালো গোপনীয়তা অনুশীলন। ক্লাউড লগগুলিতে স্বয়ংক্রিয়ভাবে সক্রিয় ব্যবহারকারী কী লেবেল থাকে যা আপনি প্রয়োজনে নির্দিষ্ট ব্যবহারকারীর লগ বার্তাগুলি সনাক্ত করতে ব্যবহার করতে পারেন।

আপনি অ্যাপস স্ক্রিপ্ট console পরিষেবা দ্বারা প্রদত্ত ফাংশন ব্যবহার করে স্ট্রিং, ফর্ম্যাট করা স্ট্রিং এবং এমনকি JSON অবজেক্ট লগ করতে পারেন।

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে ক্লাউড অপারেশনে তথ্য লগ করার জন্য console পরিষেবা ব্যবহার করতে হয়।

ইউটিলস/লগিং.জিএস
/**
 * A placeholder function to be timed.
 * @param {Object} parameters
 */
function myFunction(parameters) {
  // Placeholder for the function being timed.
}

/**
 * Logs the time taken to execute 'myFunction'.
 */
function measuringExecutionTime() {
  // A simple INFO log message, using sprintf() formatting.
  console.info("Timing the %s function (%d arguments)", "myFunction", 1);

  // Log a JSON object at a DEBUG level. The log is labeled
  // with the message string in the log viewer, and the JSON content
  // is displayed in the expanded log structure under "jsonPayload".
  const parameters = {
    isValid: true,
    content: "some string",
    timestamp: new Date(),
  };
  console.log({ message: "Function Input", initialData: parameters });
  const label = "myFunction() time"; // Labels the timing log entry.
  console.time(label); // Starts the timer.
  try {
    myFunction(parameters); // Function to time.
  } catch (e) {
    // Logs an ERROR message.
    console.error(`myFunction() yielded an error: ${e}`);
  }
  console.timeEnd(label); // Stops the timer, logs execution duration.
}

সক্রিয় ব্যবহারকারী কী

অস্থায়ী সক্রিয় ব্যবহারকারী কীগুলি ক্লাউড লগ এন্ট্রিগুলিতে অনন্য ব্যবহারকারীদের সনাক্ত করার একটি সুবিধাজনক উপায় প্রদান করে, সেই ব্যবহারকারীদের পরিচয় প্রকাশ না করে। কীগুলি প্রতিটি স্ক্রিপ্ট অনুসারে থাকে এবং মাসে প্রায় একবার পরিবর্তিত হয় যাতে কোনও ব্যবহারকারী কোনও ডেভেলপারের কাছে তাদের পরিচয় প্রকাশ করলে অতিরিক্ত সুরক্ষা প্রদান করা যায়, উদাহরণস্বরূপ কোনও সমস্যা রিপোর্ট করার সময়।

অস্থায়ী সক্রিয় ব্যবহারকারী কীগুলি ইমেল ঠিকানার মতো লগিং শনাক্তকারীর চেয়ে উন্নত কারণ:

  • তোমার লগিংয়ে কিছু যোগ করতে হবে না; সেগুলো ইতিমধ্যেই আছে!
  • তাদের ব্যবহারকারীর অনুমোদনের প্রয়োজন হয় না।
  • তারা ব্যবহারকারীর গোপনীয়তা রক্ষা করে।

আপনার ক্লাউড লগ এন্ট্রিতে অস্থায়ী সক্রিয় ব্যবহারকারী কী খুঁজে পেতে, Google ক্লাউড কনসোলে আপনার ক্লাউড লগগুলি দেখুন । আপনি কেবল তখনই এটি করতে পারবেন যদি আপনার স্ক্রিপ্ট প্রকল্পটি এমন একটি স্ট্যান্ডার্ড Google ক্লাউড প্রকল্প ব্যবহার করে যার অ্যাক্সেস আপনার আছে। কনসোলে Google ক্লাউড প্রকল্পটি খোলার পরে, আগ্রহের একটি লগ এন্ট্রি নির্বাচন করুন এবং মেটাডেটা > লেবেল > script.googleapis.com/user_key দেখতে এটি প্রসারিত করুন।

আপনার স্ক্রিপ্টে Session.getTemporaryActiveUserKey() কল করেও আপনি অস্থায়ী সক্রিয় ব্যবহারকারী কী পেতে পারেন। এই পদ্ধতিটি ব্যবহার করার একটি উপায় হল ব্যবহারকারী যখন আপনার স্ক্রিপ্টটি চালাচ্ছেন তখন তাদের কাছে কীটি প্রদর্শন করা। তারপর ব্যবহারকারীরা সমস্যাগুলি রিপোর্ট করার সময় তাদের কীগুলি অন্তর্ভুক্ত করতে পারেন যাতে আপনি প্রাসঙ্গিক লগগুলি সনাক্ত করতে পারেন।

ব্যতিক্রম লগিং

এক্সেপশন লগিং আপনার স্ক্রিপ্ট প্রজেক্ট কোডের অপ্রয়োজনীয় এক্সেপশনগুলিকে ক্লাউড লগিং-এ পাঠায়, সাথে একটি স্ট্যাক ট্রেসও।

ব্যতিক্রম লগ দেখতে, নীচের পদক্ষেপগুলি অনুসরণ করুন:

  1. অ্যাপস স্ক্রিপ্ট প্রজেক্টটি খুলুন।
  2. বাম দিকে, Executions ক্লিক করুন।
  3. উপরে, একটি ফিল্টার যোগ করুন > স্ট্যাটাস ক্লিক করুন।
  4. ব্যর্থ এবং সময় শেষ চেকবক্সগুলি নির্বাচন করুন।

আপনার স্ক্রিপ্ট প্রজেক্ট যদি আপনার অ্যাক্সেস আছে এমন একটি স্ট্যান্ডার্ড গুগল ক্লাউড প্রজেক্ট ব্যবহার করে তবে আপনি GCP কনসোলে লগ করা ব্যতিক্রমগুলিও দেখতে পারবেন।

ব্যতিক্রম লগিং সক্ষম করুন

নতুন প্রকল্পের জন্য ব্যতিক্রম লগিং ডিফল্টরূপে সক্ষম থাকে। পুরোনো প্রকল্পের জন্য ব্যতিক্রম লগিং সক্ষম করতে, নীচের পদক্ষেপগুলি অনুসরণ করুন:

  1. স্ক্রিপ্ট প্রজেক্টটি খুলুন।
  2. বাম দিকে, Project Settings ক্লিক করুন।
  3. লগ আনকাউট এক্সেপশনস টু ক্লাউড অপারেশনস চেকবক্সটি নির্বাচন করুন।

ত্রুটি প্রতিবেদন

এক্সেপশন লগিং স্বয়ংক্রিয়ভাবে ক্লাউড এরর রিপোর্টিং এর সাথে একীভূত হয়, এটি এমন একটি পরিষেবা যা আপনার স্ক্রিপ্টে উৎপন্ন ত্রুটিগুলিকে একত্রিত করে এবং প্রদর্শন করে। আপনি আপনার ক্লাউড এরর রিপোর্টগুলি Google ক্লাউড কনসোলে দেখতে পারেন। যদি আপনাকে "সেট আপ এরর রিপোর্টিং" করতে বলা হয় তবে এর কারণ হল আপনার স্ক্রিপ্ট এখনও কোনও ব্যতিক্রম লগ করেনি। এক্সেপশন লগিং সক্ষম করার বাইরে কোনও সেটআপের প্রয়োজন নেই।

লগিং প্রয়োজনীয়তা

বিল্ট-ইন এক্সিকিউশন লগ ব্যবহারের জন্য কোনও প্রয়োজনীয়তা নেই।

আপনি অ্যাপস স্ক্রিপ্ট ড্যাশবোর্ডে ক্লাউড লগের একটি সরলীকৃত সংস্করণ দেখতে পারেন। তবে, ক্লাউড লগিং এবং ত্রুটি প্রতিবেদনের সর্বাধিক সুবিধা পেতে আপনার স্ক্রিপ্টের GCP প্রকল্পে অ্যাক্সেস থাকতে হবে। এটি কেবল তখনই সম্ভব যদি আপনার স্ক্রিপ্ট প্রকল্পটি একটি স্ট্যান্ডার্ড Google ক্লাউড প্রকল্প ব্যবহার করে।