Logging

Bei der Entwicklung von Apps möchten Sie oft Informationen protokollieren, Fehler während der Entwicklung zu diagnostizieren und zu diagnostizieren und zu diagnostizieren, und für andere Zwecke.

Apps Script bietet drei verschiedene Mechanismen für die Protokollierung:

  • Das integrierte Apps Script-Ausführungsprotokoll Dieses Protokoll ist schlanker und streamt in Echtzeit, bleibt aber nur einen in kurzer Zeit.

  • Über die Cloud Logging-Oberfläche in der Developer Console, die Protokolle zur Verfügung stellt, die nach der Erstellung.

  • Error Reporting in der Developer Console, wo aufgetretene Fehler während das Skript ausgeführt wird.

Diese werden in den folgenden Abschnitten beschrieben. Zusätzlich zu diesen Mechanismen Sie können auch Ihren eigenen Protokollierungscode erstellen, der zum Beispiel Informationen schreibt in eine Logging-Tabelle oder JDBC-Datenbank.

Apps Script-Ausführungsprotokoll verwenden

Ein grundlegender Ansatz für die Anmeldung in Apps Script ist die Verwendung des integrierten des Ausführungsprotokolls. Zum Aufrufen dieser Logs Klicken Sie im Editor auf Ausführungsprotokoll. Wenn Sie eine Funktion ausführen oder die Methode Debugger in Echtzeit gestreamt.

Sie können entweder den Logger oder console-Logging-Dienste in der integriertes Ausführungsprotokoll.

Diese Logs sind für einfache Prüfungen während der Entwicklung und Fehlerbehebung vorgesehen. und bleiben nicht sehr lange bestehen.

Betrachten Sie zum Beispiel diese Funktion:

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

Wenn dieses Skript mit den Eingaben „2“ ausgeführt wird und "max@beispiel.de" die folgende Logs geschrieben werden:

[16-09-12 13:50:42:193 PDT] Datenzeile 2 per E-Mail an max@beispiel.de senden
[16-09-12 13:50:42:271 PDT] Daten in Zeile 2: Kosten 103,24

Cloud Logging

Apps Script bietet auch teilweisen Zugriff auf die Google Cloud Platform (GCP) Cloud Logging-Dienst. Wenn Sie erfordern ein Logging, das mehrere Tage andauert oder ein komplexeres Logging erforderlich ist. für eine Produktionsumgebung mit mehreren Nutzern bietet, ist Cloud Logging eine große Auswahl. Siehe Kontingente und Limits für Cloud Logging für Datenaufbewahrung und andere Kontingentdetails.

Wenn Sie ein größeres Logging-Kontingent benötigen, Senden Sie eine Kontingentanfrage für die Google Cloud Platform. Dazu benötigen Sie Zugriff auf das Cloud Platform-Projekt das Ihr Skript verwendet.

Cloud Logging verwenden

Cloud-Logs werden an das Google Cloud-Projekt angehängt die mit Ihrem Apps Script verknüpft sind. Eine vereinfachte Version dieser im Apps Script-Dashboard.

Um Cloud Logging und seine Funktionen in vollem Umfang zu nutzen, verwenden Sie eine Google Cloud-Standardprojekt mit Ihrem Skriptprojekt erstellen. So können Sie direkt in der GCP Console und bietet mehr Anzeige- und Filteroptionen.

Beim Protokollieren ist es ratsam, keine personenbezogenen Daten aufzuzeichnen. Informationen über den Nutzer wie E-Mail-Adressen. Cloud-Logs sind automatisch beschriftet mit aktive Nutzerschlüssel können Sie bei Bedarf die Protokollmeldungen eines bestimmten Nutzers finden.

Sie können Strings, formatierte Strings und sogar JSON-Objekte mit der Methode Funktionen, die von Apps Script bereitgestellt werden console-Dienst.

Das folgende Beispiel zeigt die Verwendung von console. um Informationen in Cloud Operations zu protokollieren.

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.
}

Aktive Nutzerschlüssel

Mit temporären aktiven Nutzerschlüsseln lassen sich einzelne Nutzer bequem Cloud-Logeinträge, ohne die Identität dieser Nutzer offenzulegen. Schlüssel werden pro Skript berechnet und etwa einmal im Monat geändert, um die Sicherheit zu erhöhen Sollte ein Nutzer einem Entwickler seine Identität preisgeben, z. B. bei der Berichterstellung ein Problem zu lösen.

Temporäre aktive Nutzerschlüssel sind der Protokollierung von Kennungen wie E-Mail-Adressen überlegen Adressen, weil:

  • Sie müssen Ihrem Logging nichts hinzufügen. sie sind schon da!
  • Es ist keine Nutzerautorisierung erforderlich.
  • Sie schützen die Privatsphäre der Nutzer.

So finden Sie temporäre aktive Nutzerschlüssel in Ihren Cloud-Logeinträgen: Ihre Cloud-Logs in der Google Cloud Console aufrufen Das ist nur möglich, wenn Ihr Skriptprojekt eine Google Cloud-Standardprojekt auf die Sie Zugriff haben. Nachdem Sie das Google Cloud-Projekt in der Console geöffnet haben, einen relevanten Logeintrag auswählen und ihn zur Ansicht maximieren. Metadaten > Labels > script.googleapis.com/user_key.

Sie können den temporär aktiven Nutzerschlüssel auch über folgenden Link abrufen: Session.getTemporaryActiveUserKey() in Ihrem Skript. Eine Möglichkeit, diese Methode zu verwenden, besteht darin, dem Nutzer den Schlüssel anzuzeigen. während sie Ihr Skript ausführen. Dann können Nutzer ihre Schlüssel hinzufügen beim Melden von Problemen, damit Sie die relevanten Logs leichter identifizieren können.

Ausnahme-Logging

Beim Ausnahme-Logging werden unbehandelte Ausnahmen im Skriptprojektcode gesendet zusammen mit einem Stacktrace in Cloud Logging.

So rufen Sie Ausnahmeprotokolle auf:

  1. Öffnen Sie das Apps Script-Projekt.
  2. Klicken Sie links auf Ausführungen .
  3. Klicken Sie oben auf Filter hinzufügen > Status:
  4. Klicken Sie die Kästchen Fehlgeschlagen und Zeitüberschreitung an.

Sie können sich die protokollierten Ausnahmen auch in der GCP Console ansehen. wenn Ihr Skriptprojekt ein Google Cloud-Standardprojekt auf die Sie Zugriff haben.

Ausnahmeprotokollierung aktivieren

Das Ausnahme-Logging ist für neue Projekte standardmäßig aktiviert. Ausnahme aktivieren Logging für ältere Projekte verwenden, führen Sie die folgenden Schritte aus:

  1. Öffnen Sie das Skriptprojekt.
  2. Klicken Sie links auf Projekteinstellungen.
  3. Klicken Sie auf das Kästchen Log nicht erfasste Ausnahmen in Cloud Operations protokollieren.

Error Reporting

Das Ausnahme-Logging wird automatisch Cloud Error Reporting ein Dienst, der in Ihrem Skript auftretende Fehler zusammenfasst und anzeigt. Sie können Cloud-Fehlerberichte in der Google Cloud Console aufrufen. Wenn Sie aufgefordert werden, Error Reporting einzurichten Das liegt daran, Ihr Skript hat noch keine Ausnahmen protokolliert. Darüber hinaus ist keine Einrichtung erforderlich. Ausnahme-Logging aktivieren

Logging-Anforderungen

Für die Verwendung des integrierten Ausführungsprotokolls müssen keine Voraussetzungen erfüllt sein.

Eine vereinfachte Version der Cloud-Logs finden Sie in der Apps Script-Dashboard Um jedoch Zur optimalen Nutzung von Cloud Logging und Error Reporting benötigen Sie Zugriff in das GCP-Projekt des Skripts ein. Dies ist nur möglich, wenn Ihr Skriptprojekt verwendet ein Google Cloud-Standardprojekt.