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

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

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

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

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

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

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

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

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