Il logging è uno strumento importante per il debug e il monitoraggio del codice.
Cloud Functions ti offre la possibilità di utilizzare il proprio SDK di logger, Cloud Logging personalizzato di Google o lo standard dell'oggetto console
per lo sviluppo per il web.
Scrittura dei log
mentre il Cloud Functions logger L'SDK è 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 dimestichezza con Cloud Logging (in precedenza StackDriver Logging) e preferisci usarlo per il logging personalizzato.
Utilizzo dell'SDK del logger Cloud Functions
L'SDK del logger Cloud Functions offre un'interfaccia standard con una
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 log come parte dell'importazione di caratteri jolly. Ad esempio:
const functions = require("firebase-functions/v1");
functions.logger.log("Hello from info. Here's an object:", someObj);
In alternativa, puoi utilizzare le singole esportazioni. Questo esempio mostra i dati strutturati associati 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 log INFO. - I comandi
logger.info()
hanno il livello di log INFO. - I comandi
logger.warn()
hanno il livello di log WARNING. - I comandi
logger.error()
hanno il livello di log ERROR. - I messaggi di sistema interni hanno il livello di log DEBUG.
Con logger.write()
, puoi scrivere livelli di gravità dei log per l'aggiunta di voci di log
di CRITICAL
, ALERT
e EMERGENCY
. Vedi Gravità log.
Log Cloud Logging personalizzati
I log di Cloud Functions con l'SDK di logging sono supportati da Cloud Logging. Puoi utilizzare la libreria Cloud Logging per Node.js per registrare eventi con dati strutturati, in modo da semplificare l'analisi e il monitoraggio.
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);
Uso: console.log
La soluzione consigliata per il logging da una funzione è utilizzare l'SDK del logger
per la tua piattaforma. Con Node.js, puoi utilizzare il logging JavaScript standard
come console.log
e console.error
, ma devi prima richiedere un
modulo speciale per applicare le patch ai metodi standard affinché funzionino correttamente:
require("firebase-functions/logger/compat");
Dopo aver richiesto il modulo di compatibilità del logger, puoi utilizzare normalmente i metodi console.log()
nel 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 log INFO. - I comandi
console.info()
hanno il livello di log INFO. - I comandi
console.warn()
hanno il livello di log ERROR. - I comandi
console.error()
hanno il livello di log ERROR. - I messaggi di sistema interni hanno il livello di log DEBUG.
Visualizzazione dei log
I log di Cloud Functions sono visualizzabili in
Console Google Cloud,
nell'interfaccia utente di Cloud Logging o tramite lo strumento a riga di comando firebase
.
Utilizzo dell'interfaccia a riga di comando 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, fornisci il nome della funzione come argomento:
firebase functions:log --only <FUNCTION_NAME>
Per l'intera gamma di opzioni di visualizzazione dei log, consulta la guida di functions:log
:
firebase help functions:log
Utilizzo della console Google Cloud
Puoi visualizzare i log delle funzioni nella console Google Cloud.
Utilizzo dell'UI 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 Cloud Functions.
Grafici e avvisi
Dopo aver creato metriche basate su log per monitorare le funzioni, puoi creare grafici e avvisi in base a queste metriche. Ad esempio, puoi creare un grafico per visualizzare la latenza nel tempo o un avviso che ti indichi se si verifica un determinato errore troppo spesso.
Consulta Creare grafici e avvisi per informazioni dettagliate su come utilizzare le metriche basate su log nei grafici e nei criteri di avviso.