লগিং

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

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

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

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

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

নিম্নলিখিত বিভাগগুলিতে এগুলি বর্ণনা করা হয়েছে। এই প্রক্রিয়াগুলি ছাড়াও, আপনার নিজস্ব লগার কোড তৈরি করুন যা, উদাহরণস্বরূপ, একটি লগিং স্প্রেডশিট বা 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" ইনপুট দিয়ে চলে তখন নিম্নলিখিত লগগুলি লেখা হয়:

> [16-09-12 13:50:42:193 PDT] Emailing data row 2 to john@example.com
> [16-09-12 13:50:42:271 PDT] Row 2 data: Cost 103.24

ক্লাউড লগিং

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

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

ক্লাউড লগিং লগ সংরক্ষণের বাইরেও অনেক পরিষেবা প্রদান করে, যেমন সতর্কতা এবং মেট্রিক্স। এই পরিষেবাগুলি অ্যাপস স্ক্রিপ্ট থেকে পাওয়া যায় না।

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

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

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

আপনি যদি Rhino রানটাইম ব্যবহার করেন, তাহলে Cloud Logging Apps Script Logger পরিষেবা সমর্থন করে না। পরিবর্তে, console পরিষেবা ব্যবহার করুন।

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

অ্যাপস স্ক্রিপ্ট 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. ব্যর্থ এবং সময় শেষ চেকবক্সগুলি নির্বাচন করুন।

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

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

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

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

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

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

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

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

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