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

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

Google Apps Script में लॉगिंग के लिए तीन अलग-अलग टूल उपलब्ध हैं:

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

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

  • 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}`);
  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

Cloud Logging

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

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

Cloud Logging, लॉग सेव करने के अलावा कई अन्य सेवाएं भी उपलब्ध कराता है. जैसे, सूचनाएं और मेट्रिक. ये सेवाएं Apps Script से उपलब्ध नहीं हैं.

Cloud Logging का इस्तेमाल करना

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

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

Rhino रनटाइम का इस्तेमाल करने पर, Cloud Logging, Apps Script Logger सेवा के साथ काम नहीं करता. इसके बजाय, console सेवा का इस्तेमाल करें.

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

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

यहां दिए गए उदाहरण में, Cloud Operations में जानकारी लॉग करने के लिए 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.
}

ऐक्टिव उपयोगकर्ता कुंजियां

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

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

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

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

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

अपवाद की जानकारी सेव करना

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

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

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

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

अपवाद लॉगिंग की सुविधा चालू करना

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

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

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

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

लॉगिंग से जुड़ी ज़रूरी शर्तें

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

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