Visualizzare e scrivere i log delle funzioni Cloud Run
Scrittura di log di runtime
Per impostazione predefinita, le funzioni Cloud Run includono un semplice logging di runtime. 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 del log è una semplice stringa di testo, come mostrato nei seguenti snippet. La stringa viene memorizzata nel campo textPayload
della voce di log.
Node.js
Alla maggior parte delle voci di log non è associato un livello di log. Queste 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 in output standard o in errore standard non hanno un livello di log associato.
- I messaggi di sistema interni hanno il livello di log
DEBUG
.
Vai
- I log inviati a
stdout
ostderr
non hanno un livello di log associato. - I messaggi di sistema interni hanno il livello di log
DEBUG
.
Java
- I log inviati 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
) estderr
(ad esempio tramiteConsole.Error.WriteLine
) non ha un livello di log. - I livelli di log di ASP.NET Core sono mappati ai livelli 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
I log di testo predefiniti descritti sopra non hanno un livello di log associato.
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 una singola riga di JSON serializzato. Questa riga viene rilevata e analizzata dalle funzioni Cloud Run e viene inserita nel campo jsonPayload
anziché in textPayload
. Gli snippet riportati di seguito mostrano come scrivere questi log strutturati.
Node.js
Python
Il supporto del logging strutturato è disponibile in Python 3.8 e versioni successive.
Vai
La struttura di ogni voce di log è fornita da un tipo Entry
:
Quando viene registrato un oggetto Entry, viene chiamato il metodo String
per eseguirlo nel formato JSON previsto da Cloud Logging:
Java
Attiva la registrazione JSON con Logback e SLF4J attivando Logstash JSON Encoder nella configurazione di logback.xml
.
Elaborazione di campi JSON speciali nei messaggi
Quando fornisci i dati strutturati come dizionario JSON, alcuni campi speciali vengono rimossi da jsonPayload
e scritti nel campo corrispondente nel LogEntry
generato, come descritto nella documentazione relativa ai campi speciali.
Ad esempio, se il tuo JSON include una proprietà severity
, viene rimossa dal
jsonPayload
e viene visualizzata come severity
della voce di log. La proprietà message
viene utilizzata come testo visualizzato principale della voce di log, se presente.
Scrittura dei log mediante le 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 integrarti con vari framework di logging supportati. Le librerie client semplificano anche la compilazione dei campi JSON speciali acquisendo automaticamente alcune informazioni e fornendo interfacce per compilare correttamente i campi.
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 in stdout
o stderr
. Tieni presente che se scrivi i log in modo asincrono, l'interruzione imprevista della funzione potrebbe comportare la perdita delle voci di log.
Tieni inoltre presente che la registrazione sincrona con l'API Logging aumenta il tempo di esecuzione della funzione perché richiede di attendere il completamento delle chiamate API.
Visualizzazione dei log di runtime
Utilizzo dello strumento a riga di comando
I log per le funzioni Cloud Run 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
:
gcloud functions logs read --gen2
Per visualizzare i log di una funzione specifica, fornisci il nome della funzione come argomento:
gcloud functions logs read FUNCTION_NAME --gen2
Per le funzioni in altre lingue, i log possono essere correlati
dalla stessa esecuzione della funzione utilizzando l'intestazione della richiesta x-cloud-trace-context
.
Per l'intera gamma di opzioni di visualizzazione dei log, consulta la documentazione di
gcloud functions logs read
.
Utilizzare la dashboard di logging
Puoi anche visualizzare i log di runtime per le funzioni Cloud Run 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 Cloud Logging forniscono un'interfaccia idiomatica all'API Logging:
Node.js
Per ulteriori informazioni, consulta la documentazione di riferimento della libreria client Node.js.Python
Per ulteriori informazioni, consulta la documentazione di riferimento della libreria client Python.Vai
Per ulteriori informazioni, consulta la documentazione di riferimento della libreria client Go.Java
Per ulteriori informazioni, consulta la documentazione di riferimento della libreria client Java.C#
Ruby
PHP
Per ulteriori opzioni di logging per Java, consulta Logging Java.
Rispondere ai log di runtime
Puoi rispondere agli eventi di Cloud Logging inoltrando i relativi log a una funzione Cloud Run. Per ulteriori informazioni, consulta la pagina Trigger di terze parti con Cloud Logging.
Visualizzazione dei log delle immagini di build
Puoi anche visualizzare i log del passaggio build image del processo di deployment. Per ulteriori informazioni, segui il link.