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

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

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

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

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

  • 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) क्लाउड लॉगिंग की सेवा का कुछ हद तक ऐक्सेस भी मिलता है. जब आपको ऐसे लॉगिंग की ज़रूरत होती है जो कई दिनों तक बनी रहती है या कई उपयोगकर्ताओं वाले प्रोडक्शन एनवायरमेंट के लिए, ज़्यादा मुश्किल लॉगिंग सॉल्यूशन की ज़रूरत है, तो क्लाउड लॉग करना सबसे बेहतर विकल्प है. डेटा के रखरखाव और अन्य कोटा की जानकारी के लिए, क्लाउड लॉग करने की सीमा और उसकी सीमाएं देखें.

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

क्लाउड लॉगिंग का इस्तेमाल करना

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

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

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

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

नीचे दिए गए उदाहरण में, क्लाउड ऑपरेशन में जानकारी लॉग करने के लिए, 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 प्रोजेक्ट खोलने के बाद, पसंद की एक लॉग एंट्री चुनें और उसे बड़ा करके मेटाडेटा > लेबल > Script.googleapis.com/user_key में देखें.

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

अपवाद को लॉग करना

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

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

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

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

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

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

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

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

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

डेटा इकट्ठा करने से जुड़ी ज़रूरी शर्तें

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

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