Scrittura e visualizzazione dei log


La registrazione è uno strumento importante per il debug e il monitoraggio del codice. Cloud Functions ti offre la possibilità di utilizzare l'SDK del logger, Google Cloud Logging personalizzato o l'oggetto console standard per lo sviluppo per il Web.

Scrivere log

Sebbene l'SDK del logger Cloud Functions sia consigliato per la maggior parte delle situazioni, potresti scegliere una delle altre opzioni per i seguenti motivi:

  • Hai una base di codice esistente e preferisci non eseguire il refactoring da console.log .
  • Hai familiarità con Cloud Logging (in precedenza StackDriver logging) e preferisci usarlo per la registrazione personalizzata.

Utilizzando l'SDK del logger Cloud Functions

L'SDK del logger Cloud Functions fornisce un'interfaccia standard che ha un'API simile alle istruzioni console.log e supporta altri livelli di log. Puoi utilizzare questo SDK per registrare eventi con dati strutturati , consentendo un'analisi e un monitoraggio più semplici.

L'SDK del logger supporta le voci di registro come parte di un'importazione di caratteri jolly. Per esempio:

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

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

In alternativa è possibile utilizzare esportazioni individuali. Questo esempio mostra i dati strutturati allegati al log come ultimo argomento:

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'
});
  • I comandi logger.log() hanno il livello di registro INFO .
  • I comandi logger.info() hanno il livello di registro INFO .
  • I comandi logger.warn() hanno il livello di registro ATTENZIONE .
  • I comandi logger.error() hanno il livello di log ERROR .
  • I messaggi di sistema interni hanno il livello di registro DEBUG .

Con logger.write() , è possibile scrivere voci di registro oltre ai livelli di gravità del registro CRITICAL , ALERT ed EMERGENCY . Vedi LogSeverity .

Registri di registrazione cloud personalizzati

I log di Cloud Functions con l'SDK del logger sono supportati da Cloud Logging . Puoi utilizzare la libreria Cloud Logging per Node.js per registrare eventi con dati strutturati, consentendo un'analisi e un monitoraggio più semplici.

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

Utilizzando console.log

La soluzione consigliata per l'accesso da una funzione è utilizzare l'SDK del logger per la tua piattaforma. Con Node.js, puoi invece utilizzare chiamate di registrazione JavaScript standard come console.log e console.error , ma devi prima richiedere un modulo speciale per applicare patch ai metodi standard affinché funzionino correttamente:

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

Una volta richiesto il modulo di compatibilità del logger, puoi utilizzare i metodi console.log() normalmente nel tuo codice:

exports.helloError = functions.https.onRequest((request, response) => {
  console.log('I am a log entry!');
  response.send('Hello World...');
});
  • I comandi console.log() hanno il livello di registro INFO .
  • I comandi console.info() hanno il livello di registro INFO .
  • I comandi console.warn() hanno il livello di registro ERROR .
  • I comandi console.error() hanno il livello di registro ERROR .
  • I messaggi di sistema interni hanno il livello di registro DEBUG .

Visualizzazione dei registri

I log per Cloud Functions sono visualizzabili nella console Google Cloud , nell'interfaccia utente di Cloud Logging o tramite lo strumento a riga di comando firebase .

Utilizzando la CLI di Firebase

Per visualizzare i log con lo strumento firebase , utilizza il comando functions:log :

firebase functions:log

Per visualizzare i log per una funzione specifica, fornire il nome della funzione come argomento:

firebase functions:log --only <FUNCTION_NAME>

Per la gamma completa di opzioni di visualizzazione del registro, visualizza la guida functions:log :

firebase help functions:log

Utilizzando la console Google Cloud

Puoi visualizzare i log delle funzioni nella console Google Cloud .

Utilizzando l'interfaccia utente di Cloud Logging

Puoi visualizzare i log per Cloud Functions nell'interfaccia utente di Cloud Logging.

Analisi dei log

Cloud Logging offre una potente suite di strumenti di analisi dei log che puoi utilizzare per monitorare le tue Cloud Functions.

Grafici e avvisi

Dopo aver creato metriche basate su log per monitorare le tue funzioni, puoi creare grafici e avvisi basati su queste metriche. Ad esempio, potresti creare un grafico per visualizzare la latenza nel tempo o creare un avviso per farti sapere se un determinato errore si verifica troppo spesso.

Consulta Creazione di grafici e avvisi per informazioni dettagliate su come utilizzare le metriche basate su log nei grafici e nei criteri di avviso.