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

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

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

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

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

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

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

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

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

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 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 प्रोजेक्ट का इस्तेमाल कर रहा है और आपके पास उसका ऐक्सेस है, तो GCP Console में लॉग किए गए अपवादों को भी देखा जा सकता है.

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

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

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

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

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

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

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

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