Visualizza e scrivi log delle funzioni Cloud Function
Scrittura dei log di runtime
Cloud Functions include per impostazione predefinita il logging di runtime semplice. I log scritti in stdout
o stderr
verranno visualizzati automaticamente nella console Google Cloud.
Per un logging più avanzato, utilizza le librerie client di Cloud Logging.
Per impostazione predefinita, il payload di log è una semplice stringa di testo, come mostrato negli snippet che seguono. La stringa è memorizzata nel campo textPayload
della voce di log.
Node.js
Alla maggior parte delle voci di log non è associato un livello di log. Questi includono:- Log emessi utilizzando
console.log()
,console.info()
,console.warn()
oconsole.error()
- Log scritti direttamente in
stdout
ostderr
I messaggi di sistema interni hanno il livello di log DEBUG
.
Python
- I log relativi all'output standard o all'errore standard non hanno un livello di log associato.
- I messaggi di sistema interni hanno il livello di log
DEBUG
.
Go
- I log relativi a
stdout
ostderr
non hanno un livello di log associato. - I messaggi di sistema interni hanno il livello di log
DEBUG
.
Java
- I log relativi a
stdout
ostderr
non hanno un livello di log associato. - I messaggi di sistema interni hanno il livello di log
DEBUG
.
C#
- Il testo scritto in
stdout
(ad esempio tramiteConsole.WriteLine
) e instderr
(ad esempio tramiteConsole.Error.WriteLine
) non hanno un livello log. - I livelli di logging di ASP.NET Core sono mappati a quelli di Cloud Logging come segue:
LogLevel.Trace
eLogLevel.Debug map
a Cloud LoggingDEBUG
.LogLevel.Information
corrisponde a Cloud LoggingINFO
.LogLevel.Warning
corrisponde a Cloud LoggingWARNING
.LogLevel.Error
corrisponde a Cloud LoggingERROR
.LogLevel.Critical
corrisponde a Cloud LoggingCRITICAL
.
Ruby
Alle voci di log non è associato un livello di log.
PHP
Scrittura di log strutturati
Ai log di testo predefiniti descritti sopra non è associato un livello di log.
Se vuoi includere livelli di log o altri campi specifici nelle voci di log, puoi scrivere i log in stdout
o stderr
sotto forma di un'unica riga di JSON serializzato. Questa riga viene selezionata e analizzata da
Cloud Functions e inserita nel campo jsonPayload
anziché
textPayload
. Gli snippet riportati di seguito mostrano la scrittura di questi log strutturati.
Node.js
Python
Il supporto del logging strutturato è disponibile in Python 3.8 e versioni successive.
Go
La struttura di ogni voce di log è fornita da un tipo Entry
:
Quando viene registrato uno struct di voce, il metodo String
viene chiamato per marshallare nel
formato JSON previsto da Cloud Logging:
Java
Abilita il logging JSON con Logback e SLF4J attivando Logstash JSON Encoder nella configurazione di logback.xml
.
Elaborazione di campi JSON speciali nei messaggi
Quando fornisci dati strutturati come dizionario JSON, alcuni campi speciali vengono eliminati da jsonPayload
e vengono scritti nel campo corrispondente nel LogEntry
generato, come descritto nella documentazione relativa ai campi speciali.
Ad esempio, se JSON include una proprietà severity
, viene rimossa da jsonPayload
e viene visualizzata al suo posto come severity
della voce di log. La proprietà message
viene utilizzata come testo visualizzato principale della voce di log, se presente.
Scrittura dei log tramite librerie client
Le librerie client di Cloud Logging forniscono un modo alternativo per scrivere i log. Con queste librerie puoi utilizzare i meccanismi di logging standard del tuo linguaggio di programmazione e integrarli con vari framework di logging supportati. Le librerie client semplificano anche la compilazione dei campi JSON speciali acquisendo automaticamente alcune informazioni e fornendo le interfacce per compilare i campi in modo appropriato.
Puoi utilizzare le librerie client per scrivere log con l'API Cloud Logging in modo sincrono o asincrono. Alcune librerie client supportano anche la scrittura
di log strutturati direttamente su stdout
o stderr
. Tieni presente che, se scrivi i log in modo asincrono, la terminazione imprevista delle funzioni potrebbe comportare la perdita di voci di log.
Tieni inoltre presente che il logging sincrono con l'API Logging aumenta il tempo di esecuzione della funzione perché richiede il completamento delle chiamate API.
Visualizzazione dei log di runtime
Utilizzo dello strumento a riga di comando
I log per Cloud Functions sono visualizzabili nell'interfaccia utente di Cloud Logging e tramite Google Cloud CLI.
Per visualizzare i log con gcloud CLI, utilizza il comando gcloud functions logs read
, specificando facoltativamente il flag --gen2
per Cloud Functions (2nd gen):
gcloud functions logs read [--gen2]
Per visualizzare i log per una funzione specifica, fornisci il nome della funzione sotto forma di argomento:
gcloud functions logs read FUNCTION_NAME [--gen2]
In Cloud Functions (1ª generazione.), puoi visualizzare i log per un'esecuzione specifica:
gcloud functions logs read FUNCTION_NAME --execution-id EXECUTION_ID
Per l'intera gamma delle opzioni di visualizzazione dei log, consulta la documentazione per gcloud functions logs read
.
Utilizzo della dashboard di Logging
Puoi visualizzare i log di runtime per Cloud Functions anche nella console Google Cloud.
Utilizzo dell'API Logging
I log di runtime possono essere scritti e recuperati anche tramite l'API Cloud Logging. Le librerie client di Cloud Logging forniscono un'interfaccia idiomatica per l'API Logging:
Node.js
Per maggiori informazioni, consulta il riferimento sulla libreria client Node.js.Python
Per maggiori informazioni, consulta il riferimento alla libreria client Python.Go
Per maggiori informazioni, consulta la sezione Riferimento alla libreria client Go.Java
Per ulteriori informazioni, consulta la pagina Riferimento alla libreria client Java.C#
Ruby
PHP
Per ulteriori opzioni di logging per Java, consulta Logging Java.
Risposta ai log di runtime
Puoi rispondere agli eventi di Cloud Logging inoltrando i relativi log a una Cloud Function. Per ulteriori informazioni, consulta la pagina Trigger di seconda parte con Cloud Logging.
Visualizzazione dei log delle immagini build
Puoi anche visualizzare i log per il passaggio Crea immagine del processo di deployment. Per saperne di più, segui il link.