लॉग इन हो रहा है

किसी भी तरह का ऐप्लिकेशन डेवलप करते समय, आपको अक्सर अपनी जानकारी लॉग करनी पड़ती है. इससे, डेवलपमेंट के दौरान गड़बड़ियों की पहचान करने, ग्राहक से जुड़ी समस्याओं की पहचान करने, और उन्हें ठीक करने के साथ-साथ दूसरे कामों के लिए भी यह जानकारी लॉग करना ज़रूरी है.

Apps Script में लॉग करने के लिए, तीन अलग-अलग तरीके मिलते हैं:

  • पहले से मौजूद Apps Script एक्ज़ीक्यूशन लॉग. यह लॉग हल्का होता है और रीयल टाइम में स्ट्रीम होता है. हालांकि, यह कुछ ही समय के लिए दिखता है.

  • डेवलपर कंसोल में क्लाउड लॉगिंग इंटरफ़ेस, जो लॉग उपलब्ध कराता है, जो उनके बनाए जाने के बाद कई दिनों तक मौजूद रहते हैं.

  • Developer Console का गड़बड़ी रिपोर्टिंग इंटरफ़ेस, जो आपकी स्क्रिप्ट के चलने के दौरान होने वाली गड़बड़ियों को इकट्ठा करके उन्हें रिकॉर्ड करता है.

इन सेक्शन में इनके बारे में बताया गया है. इन सभी तरीकों के अलावा, अपना लॉगर कोड भी बनाया जा सकता है. उदाहरण के लिए, जो लॉगर स्प्रेडशीट या JDBC डेटाबेस में जानकारी लिखता है.

Apps Script एक्ज़ीक्यूशन लॉग का इस्तेमाल करें

Apps Script में लॉग इन करने का एक बुनियादी तरीका, पहले से मौजूद एक्ज़ीक्यूशन लॉग का इस्तेमाल करना है. इन लॉग को देखने के लिए, एडिटर में सबसे ऊपर, एक्ज़िक्यूशन लॉग पर क्लिक करें. किसी फ़ंक्शन को चलाने या डीबगर का इस्तेमाल करने पर, लॉग स्ट्रीम रीयल टाइम में हो जाती है.

पहले से मौजूद, एक्ज़ीक्यूशन लॉग में, 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);
  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] डेटा की पंक्ति 2 को john@example.com पर ईमेल किया जा रहा है
[16-09-12 13:50:42:271 PDT] पंक्ति 2 का डेटा: लागत 103.24

Cloud Logging

Apps Script, Google Cloud Platform (GCP) Cloud Logging सेवा का आंशिक ऐक्सेस भी देती है. अगर आपको ऐसी लॉगिंग की ज़रूरत है जो कई दिनों तक बनी रहती है या कई उपयोगकर्ताओं वाले प्रोडक्शन एनवायरमेंट के लिए ज़्यादा मुश्किल लॉगिंग समाधान की ज़रूरत होती है, तो क्लाउड लॉगिंग का इस्तेमाल किया जाता है. डेटा के रखरखाव और कोटा से जुड़ी अन्य जानकारी के लिए, क्लाउड से लॉग लॉग करने का कोटा और सीमाएं देखें.

अगर आपको डेटा लॉग करने के लिए ज़्यादा कोटा चाहिए, तो Google Cloud Platform के कोटा का अनुरोध सबमिट करें. इसके लिए ज़रूरी है कि आपके पास उस Cloud Platform प्रोजेक्ट का ऐक्सेस हो जिसका इस्तेमाल आपकी स्क्रिप्ट करती है.

क्लाउड लॉगिंग का उपयोग करना

क्लाउड लॉग, आपकी Apps Script से जुड़े Google Cloud प्रोजेक्ट से जुड़े होते हैं. Apps Script डैशबोर्ड में, इन लॉग का आसान वर्शन देखा जा सकता है.

क्लाउड लॉगिंग और इसकी क्षमताओं का पूरा इस्तेमाल करने के लिए, अपने स्क्रिप्ट प्रोजेक्ट के साथ स्टैंडर्ड Google Cloud प्रोजेक्ट का इस्तेमाल करें. इससे आपको क्लाउड लॉग को सीधे GCP कंसोल में ऐक्सेस किया जा सकता है. साथ ही, आपको देखने और फ़िल्टर करने के ज़्यादा विकल्प मिलते हैं.

का इस्तेमाल करें.

डेटा को लॉग करते समय, उपयोगकर्ता के बारे में किसी भी निजी जानकारी, जैसे कि ईमेल पते को रिकॉर्ड करने से बचना बेहतर होगा. क्लाउड लॉग पर चालू उपयोगकर्ता कुंजियां अपने-आप लेबल हो जाती हैं. इनका इस्तेमाल ज़रूरत पड़ने पर, किसी खास उपयोगकर्ता के लॉग मैसेज का पता लगाने के लिए किया जा सकता है.

Apps Script console सेवा से मिलने वाले फ़ंक्शन का इस्तेमाल करके, स्ट्रिंग, फ़ॉर्मैट की गई स्ट्रिंग, और यहां तक कि JSON ऑब्जेक्ट भी लॉग किए जा सकते हैं.

नीचे दिए गए उदाहरण में, Cloud Operations में जानकारी लॉग करने के लिए, console सेवा का इस्तेमाल करने का तरीका बताया गया है.

/**
 * 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.
}

सक्रिय उपयोगकर्ता कुंजियां

अस्थायी सक्रिय उपयोगकर्ता कुंजियां, Cloud लॉग एंट्री में यूनीक उपयोगकर्ताओं को पहचानने का आसान तरीका देती हैं. इन उपयोगकर्ताओं की पहचान से जुड़ी जानकारी ज़ाहिर नहीं की जाती है. कुंजियां हर स्क्रिप्ट के हिसाब से होती हैं और ज़्यादा सुरक्षा देने के लिए महीने में करीब एक बार बदलती हैं. उदाहरण के लिए, किसी समस्या की शिकायत करते समय, उपयोगकर्ता को अपनी पहचान डेवलपर को बतानी चाहिए.

अस्थायी ऐक्टिव उपयोगकर्ता कुंजियां, ईमेल पते जैसे लॉग आइडेंटिफ़ायर को लॉग करने से बेहतर होती हैं, क्योंकि:

  • आपको अपनी लॉगिंग में कुछ भी जोड़ने की ज़रूरत नहीं है; वे पहले से ही वहां मौजूद हैं!
  • इन्हें उपयोगकर्ता की अनुमति की ज़रूरत नहीं होती.
  • ये उपयोगकर्ता की निजता की सुरक्षा करते हैं.

Cloud लॉग की एंट्री में, कुछ समय के लिए चालू उपयोगकर्ता कुंजियां ढूंढने के लिए, Google Cloud Console में अपना क्लाउड लॉग देखें. ऐसा सिर्फ़ तब किया जा सकता है, जब आपका स्क्रिप्ट प्रोजेक्ट किसी ऐसे स्टैंडर्ड Google Cloud प्रोजेक्ट का इस्तेमाल कर रहा हो जिसका ऐक्सेस आपके पास हो. कंसोल में Google Cloud प्रोजेक्ट खोलने के बाद, अपनी पसंद की लॉग एंट्री चुनें और metadata > labels > script.googleapis.com/user_key देखने के लिए उसे बड़ा करें.

स्क्रिप्ट में Session.getTemporaryActiveUserKey() को कॉल करके भी, कुछ समय के लिए चालू उपयोगकर्ता कुंजी हासिल की जा सकती है. इस तरीके का इस्तेमाल करने का एक तरीका यह है कि जब उपयोगकर्ता आपकी स्क्रिप्ट चला रहा हो, तब उसे कुंजी दिखाएं. इसके बाद, समस्याओं की शिकायत करते समय उपयोगकर्ता अपनी कुंजियां शामिल कर सकते हैं. इससे आपको सही लॉग पहचानने में मदद मिलेगी.

अपवाद लॉगिंग

अपवाद के तौर पर लॉग करने पर, आपके स्क्रिप्ट प्रोजेक्ट कोड में मौजूद बिना हैंडल के अपवाद, स्टैक ट्रेस के साथ क्लाउड लॉगिंग को भेजे जाते हैं.

अपवाद लॉग देखने के लिए, नीचे दिया गया तरीका अपनाएं:

  1. Apps Script प्रोजेक्ट खोलें.
  2. बाईं ओर, लागू करना पर क्लिक करें.
  3. सबसे ऊपर, फ़िल्टर जोड़ें > स्थिति पर क्लिक करें.
  4. समस्या ठीक नहीं हुई और समयसीमा खत्म हो गई चेकबॉक्स चुनें.

अगर आपका स्क्रिप्ट प्रोजेक्ट, किसी ऐसे स्टैंडर्ड Google Cloud प्रोजेक्ट का इस्तेमाल कर रहा है जिसका ऐक्सेस आपके पास है, तो GCP कंसोल में लॉग किए गए अपवाद देखे जा सकते हैं.

अपवाद लॉगिंग सक्षम करें

नए प्रोजेक्ट के लिए, अपवाद को लॉग करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. अगर आपको पुराने प्रोजेक्ट के लिए, अपवाद के तौर पर लॉग इन करने की सुविधा चालू करनी है, तो यह तरीका अपनाएं:

  1. स्क्रिप्ट प्रोजेक्ट खोलें.
  2. बाईं ओर, प्रोजेक्ट सेटिंग पर क्लिक करें.
  3. Cloud Operations के लिए, जिन अपवादों की जानकारी नहीं मिली है उन्हें लॉग करें चेकबॉक्स को चुनें.

रिपोर्ट करते समय गड़बड़ी हुई

अपवाद के तौर पर लॉग करने की सुविधा, क्लाउड गड़बड़ी रिपोर्टिंग की सुविधा के साथ अपने-आप इंटिग्रेट हो जाती है. यह सेवा, आपकी स्क्रिप्ट में हुई गड़बड़ियों को इकट्ठा करके दिखाती है. Google Cloud Console में, क्लाउड से जुड़ी गड़बड़ी की रिपोर्ट देखी जा सकती हैं. अगर आपको "गड़बड़ी की रिपोर्ट करने की सुविधा सेट अप करें" का मैसेज दिखता है, तो इसकी वजह यह है कि आपकी स्क्रिप्ट ने अभी तक कोई अपवाद लॉग नहीं किया है. अपवाद के तौर पर लॉग इकट्ठा करने की सुविधा चालू करने के अलावा, किसी और तरह के सेटअप की ज़रूरत नहीं होती है.

लॉग करने की ज़रूरी शर्तें

पहले से मौजूद एक्ज़ीक्यूशन लॉग का इस्तेमाल करने के लिए कोई ज़रूरत नहीं है.

Apps Script डैशबोर्ड में, क्लाउड लॉग का आसान वर्शन देखा जा सकता है. हालांकि, क्लाउड लॉगिंग और गड़बड़ी की रिपोर्टिंग का ज़्यादा से ज़्यादा लाभ उठाने के लिए, आपके पास स्क्रिप्ट के GCP प्रोजेक्ट का ऐक्सेस होना चाहिए. ऐसा सिर्फ़ तब किया जा सकता है, जब आपके स्क्रिप्ट प्रोजेक्ट में स्टैंडर्ड Google Cloud प्रोजेक्ट का इस्तेमाल किया जा रहा हो.