লগিং

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

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

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

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

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

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

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

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

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

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

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

utils/logging.gs
/**
 * 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);
  try {
    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);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed with error %s', err.message);
  }
}

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

[16-09-12 13:50:42:193 PDT] john@example.com-এ ডেটা সারি 2 ইমেল করা
[16-09-12 13:50:42:271 PDT] সারি 2 ডেটা: খরচ 103.24

ক্লাউড লগিং

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

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

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

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

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

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

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

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

utils/logging.gs
/**
 * 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 কনসোলে লগ করা ব্যতিক্রমগুলিও দেখতে পারেন যদি আপনার স্ক্রিপ্ট প্রোজেক্ট একটি স্ট্যান্ডার্ড Google ক্লাউড প্রকল্প ব্যবহার করে যা আপনার অ্যাক্সেস আছে।

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

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

  1. স্ক্রিপ্ট প্রকল্প খুলুন.
  2. বামদিকে, প্রকল্প সেটিংস ক্লিক করুন।
  3. ক্লাউড অপারেশন চেকবক্সে লগ না ধরা ব্যতিক্রমগুলি নির্বাচন করুন৷

ত্রুটি রিপোর্টিং

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

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

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

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