Logging

Durante lo sviluppo di un qualsiasi tipo di app, spesso vuoi registrare informazioni che diagnosticare i difetti durante lo sviluppo, identificare e diagnosticare i problemi dei clienti, e per altri scopi.

Apps Script offre tre diversi meccanismi per il logging:

  • Il log integrato di esecuzione di Apps Script. Questo log è leggero e viene trasmesso in streaming in tempo reale, ma persiste solo per un per un breve periodo di tempo.

  • L'interfaccia di Cloud Logging nella Developer Console, che fornisce i log che rimangono per molti giorni dopo la loro per la creazione di contenuti.

  • Interfaccia di Error Reporting nella Developer Console, che raccoglie e registra gli errori che si verificano mentre lo script è in esecuzione.

Queste informazioni sono descritte nelle sezioni seguenti. Oltre a questi meccanismi, puoi anche creare un codice logger personalizzato che, ad esempio, scriva informazioni in un foglio di lavoro di logging o database JDBC.

Utilizza il log di esecuzione di Apps Script

Un approccio di base per la registrazione in Apps Script consiste nell'utilizzare lo strumento di esecuzione del log. Per visualizzare questi log, in alto dell'editor, fai clic su Log esecuzione. Quando esegui una funzione o utilizzi debugger, i flussi di log in tempo reale.

Puoi utilizzare la Logger o Servizi di logging di console in di esecuzione integrata.

Questi log servono per semplici controlli durante lo sviluppo e il debug, e non rimangono a lungo.

Ad esempio, considera questa funzione:

utils/logging.gs
/**
 * 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);
  }
}

Quando lo script viene eseguito con l'input "2" e "mario@example.com" il vengono scritti i seguenti log:

[16-09-12 13:50:42:193 PDT] Invio tramite email della riga di dati 2 a john@example.com
[16-09-12 13:50:42:271 PDT] Dati riga 2: costo 103,24

Cloud Logging

Apps Script fornisce inoltre accesso parziale alla piattaforma Google Cloud Cloud Logging. Quando richiedono il logging che persiste per diversi giorni o richiedono un logging più complesso soluzione per un ambiente di produzione multiutente, Cloud Logging è la soluzione scelta. Consulta Quote e limiti di Cloud Logging per la conservazione dei dati e altri dettagli delle quote.

Se hai bisogno di una quota maggiore per il logging, puoi invia una richiesta di quota per la piattaforma Google Cloud. È necessario che tu abbia accesso Progetto Cloud Platform utilizzati dal tuo script.

Utilizzo di Cloud Logging

I log di Cloud sono collegati al progetto Google Cloud associati al tuo Apps Script. Puoi visualizzare una versione semplificata di questi nella dashboard di Apps Script.

Per sfruttare appieno Cloud Logging e le sue funzionalità, utilizza un progetto Google Cloud standard con il progetto di script. Ciò ti consente di accedere ai log di Cloud direttamente Console Google Cloud e offre più opzioni di visualizzazione e filtro.

Quando effettui il logging, è buona norma evitare di registrare dati informazioni sull'utente, ad esempio gli indirizzi email. I log di Cloud etichettato automaticamente con chiavi utente attive puoi utilizzare per individuare i messaggi di log di un utente specifico quando necessario.

Puoi registrare stringhe, stringhe formattate e persino oggetti JSON utilizzando funzioni fornite da Apps Script Servizio console.

L'esempio seguente mostra come utilizzare console per registrare le informazioni nella Suite operativa di Google Cloud.

utils/logging.gs
/**
 * 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.
}

Chiavi utente attive

Le chiavi utente attive temporanee consentono di individuare facilmente gli utenti unici in Cloud Log senza rivelare le identità di questi utenti. Chiavi sono per script e cambiano circa una volta al mese per garantire maggiore sicurezza un utente dovrebbe rivelare la propria identità a uno sviluppatore, ad esempio durante la segnalazione un problema.

Le chiavi utente attive temporanee sono superiori agli identificatori di logging come le email indirizzi perché:

  • Non è necessario aggiungere nulla al logging; sono già presenti.
  • Non richiedono l'autorizzazione dell'utente.
  • Tutelano la privacy degli utenti.

Per trovare le chiavi utente attive temporanee nelle voci di Cloud Log: visualizza i log di Cloud nella console Google Cloud. Puoi farlo solo se il progetto di script utilizza un oggetto progetto Google Cloud standard a cui hai accesso. Una volta aperto il progetto Google Cloud nella console, seleziona una voce di log che ti interessa ed espandila per visualizzarla metadata > etichette > script.googleapis.com/user_key.

Puoi anche ottenere la chiave utente attiva temporanea chiamando il numero Session.getTemporaryActiveUserKey() nel tuo script. Un modo per utilizzare questo metodo è mostrare la chiave all'utente mentre eseguono lo script. Quindi gli utenti possono scegliere di includere le loro chiavi quando segnali problemi per aiutarti a identificare i log pertinenti.

Logging delle eccezioni

La registrazione delle eccezioni invia eccezioni non gestite nel codice del progetto di script a Cloud Logging, insieme a un'analisi dello stack.

Per visualizzare i log delle eccezioni:

  1. Apri il progetto Apps Script.
  2. A sinistra, fai clic su Esecuzioni .
  3. In alto, fai clic su Aggiungi un filtro > Stato.
  4. Seleziona le caselle di controllo Non riuscito e Timeout.

Puoi anche visualizzare le eccezioni registrate nella console di Google Cloud se il progetto di script utilizza un oggetto progetto Google Cloud standard a cui hai accesso.

Abilita il logging delle eccezioni

La registrazione delle eccezioni è abilitata per impostazione predefinita per i nuovi progetti. Per abilitare l'eccezione per i progetti precedenti, segui questi passaggi:

  1. Apri il progetto di script.
  2. A sinistra, fai clic su Impostazioni progetto .
  3. Seleziona la casella di controllo Registra eccezioni non rilevate per la Suite operativa di Google Cloud.

Error Reporting

Il logging delle eccezioni si integra automaticamente con Cloud Error Reporting un servizio che aggrega e visualizza gli errori prodotti nel tuo script. Puoi visualizza i report sugli errori di Cloud nella console Google Cloud. Se ti viene chiesto di configurare Error Reporting questo perché lo script non ha ancora registrato alcuna eccezione. Non è richiesta alcuna configurazione oltre abilitazione del logging delle eccezioni.

Requisiti di logging

Non sono previsti requisiti per l'utilizzo del log di esecuzione integrato.

Puoi visualizzare una versione semplificata dei log di Cloud in Dashboard di Apps Script. Tuttavia, per sfruttare al meglio Cloud Logging e Error Reporting, devi avere accesso al progetto Google Cloud dello script. Ciò è possibile solo se il progetto di script sta utilizzando un progetto Google Cloud standard.