Protokolle schreiben und anzeigen


Die Protokollierung ist ein wichtiges Tool zum Debuggen und Überwachen von Code. Cloud Functions bietet Ihnen die Möglichkeit, das Logger-SDK, das benutzerdefinierte Google Cloud Logging oder den console für die Entwicklung für das Web zu verwenden.

Protokolle schreiben

Während das Cloud Functions- Logger- SDK für die meisten Situationen empfohlen wird, können Sie aus folgenden Gründen eine der anderen Optionen wählen:

  • Sie verfügen über eine vorhandene Codebasis und möchten kein Refactoring von console.log durchführen.
  • Sie sind mit Cloud Logging (ehemals StackDriver-Logging) vertraut und verwenden es lieber für benutzerdefiniertes Logging.

Verwenden des Cloud Functions-Logger-SDK

Das Cloud Functions-Logger-SDK bietet eine Standardschnittstelle mit einer ähnlichen API wie console.log Anweisungen und unterstützt andere Protokollebenen. Mit diesem SDK können Sie Ereignisse mit strukturierten Daten protokollieren und so eine einfachere Analyse und Überwachung ermöglichen.

Das Logger-SDK unterstützt Protokolleinträge im Rahmen eines Wildcard-Imports. Zum Beispiel:

  const functions = require("firebase-functions");

  functions.logger.log("Hello from info. Here's an object:", someObj);

Alternativ können Sie auch Einzelexporte nutzen. Dieses Beispiel zeigt strukturierte Daten, die als letztes Argument an das Protokoll angehängt werden:

const { warn } = require("firebase-functions/logger");


// Attach structured data to the log as the last argument.
warn("This is a 'WARNING' severity message with some metadata.", {
  key1: 'val1',
  key2: 'val2'
});
  • logger.log() -Befehle haben die Protokollebene INFO .
  • logger.info() Befehle haben die Protokollebene INFO .
  • logger.warn() -Befehle haben die Protokollebene WARNING .
  • logger.error() Befehle haben die Protokollebene ERROR .
  • Interne Systemmeldungen haben die Protokollstufe DEBUG .

Mit logger.write() können Sie Protokolleinträge mit den zusätzlichen Protokollschweregraden CRITICAL , ALERT und EMERGENCY schreiben. Siehe LogSeverity .

Benutzerdefinierte Cloud Logging-Protokolle

Cloud Functions-Protokolle mit dem Logger-SDK werden durch Cloud Logging unterstützt. Sie können die Cloud Logging-Bibliothek für Node.js verwenden, um Ereignisse mit strukturierten Daten zu protokollieren und so eine einfachere Analyse und Überwachung zu ermöglichen.

const { Logging } = require('@google-cloud/logging');

// ...

// Instantiate the logging SDK. The project ID will
// be automatically inferred from the Cloud Functions environment.
const logging = new Logging();
const log = logging.log('my-custom-log-name');

// This metadata is attached to each log entry. This specifies a fake
// Cloud Function called 'Custom Metrics' in order to make your custom
// log entries appear in the Cloud Functions logs viewer.
const METADATA = {
  resource: {
    type: 'cloud_function',
    labels: {
      function_name: 'CustomMetrics',
      region: 'us-central1'
    }
  }
};

// ...

// Data to write to the log. This can be a JSON object with any properties
// of the event you want to record.
const data = {
  event: 'my-event',
  value: 'foo-bar-baz',

  // Optional 'message' property will show up in the Firebase
  // console and other human-readable logging surfaces
  message: 'my-event: foo-bar-baz'
};

// Write to the log. The log.write() call returns a Promise if you want to
// make sure that the log was written successfully.
const entry = log.entry(METADATA, data);
log.write(entry);

Verwenden von console.log

Die empfohlene Lösung für die Protokollierung einer Funktion ist die Verwendung des Logger-SDK für Ihre Plattform. Mit Node.js können Sie stattdessen Standard-JavaScript-Protokollierungsaufrufe wie console.log und console.error verwenden. Sie benötigen jedoch zunächst ein spezielles Modul, um die Standardmethoden zu patchen, damit sie ordnungsgemäß funktionieren:

require("firebase-functions/logger/compat");

Sobald Sie das Logger-Kompatibilitätsmodul benötigt haben, können Sie die Methoden console.log() wie gewohnt in Ihrem Code verwenden:

exports.helloError = functions.https.onRequest((request, response) => {
  console.log('I am a log entry!');
  response.send('Hello World...');
});
  • console.log() -Befehle haben die Protokollebene INFO .
  • console.info() -Befehle haben die Protokollebene INFO .
  • console.warn() -Befehle haben die Protokollebene ERROR .
  • console.error() Befehle haben die Protokollebene ERROR .
  • Interne Systemmeldungen haben die Protokollebene DEBUG .

Protokolle ansehen

Protokolle für Cloud Functions können entweder in der Google Cloud Console , der Cloud Logging-Benutzeroberfläche oder über das firebase Befehlszeilentool angezeigt werden.

Verwenden der Firebase-CLI

Um Protokolle mit dem firebase Tool anzuzeigen, verwenden Sie den Befehl functions:log :

firebase functions:log

Um Protokolle für eine bestimmte Funktion anzuzeigen, geben Sie den Funktionsnamen als Argument an:

firebase functions:log --only <FUNCTION_NAME>

Den gesamten Umfang der Protokollanzeigeoptionen finden Sie in der Hilfe zu functions:log :

firebase help functions:log

Verwendung der Google Cloud-Konsole

Sie können Protokolle für Funktionen in der Google Cloud Console anzeigen.

Verwenden der Cloud Logging-Benutzeroberfläche

Sie können Protokolle für Cloud Functions in der Cloud Logging-Benutzeroberfläche anzeigen .

Protokolle analysieren

Cloud Logging bietet eine leistungsstarke Suite von Protokollanalysetools, mit denen Sie Ihre Cloud-Funktionen überwachen können.

Diagramme und Warnungen

Sobald Sie protokollbasierte Metriken zur Überwachung Ihrer Funktionen erstellt haben, können Sie Diagramme und Warnungen basierend auf diesen Metriken erstellen. Sie könnten beispielsweise ein Diagramm erstellen, um die Latenz im Zeitverlauf zu visualisieren, oder eine Warnung erstellen, um Sie darüber zu informieren, wenn ein bestimmter Fehler zu häufig auftritt.

Ausführliche Informationen zur Verwendung protokollbasierter Metriken in Diagrammen und Warnungsrichtlinien finden Sie unter Erstellen von Diagrammen und Warnungen.