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

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

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

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

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

  • Developers 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] john@example.com को डेटा की दूसरी लाइन ईमेल की जा रही है
[16-09-12 13:50:42:271 PDT] दूसरी लाइन का डेटा: कीमत 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 Console में सीधे तौर पर Cloud लॉग ऐक्सेस किए जा सकते हैं. साथ ही, आपको देखने और फ़िल्टर करने के ज़्यादा विकल्प मिलते हैं.

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

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

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 में अपने Cloud लॉग देखें. ऐसा सिर्फ़ तब किया जा सकता है, जब आपका स्क्रिप्ट प्रोजेक्ट किसी ऐसे स्टैंडर्ड Google Cloud प्रोजेक्ट का इस्तेमाल कर रहा हो जिसका ऐक्सेस आपके पास हो. Console में 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 में लॉग करें जिनकी पहचान नहीं हुई है चेकबॉक्स को चुनें.

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

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

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

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

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