Logging Java
Nel runtime Java, qualsiasi output in STDOUT o STDERR viene propagato a Cloud
Logging. Tuttavia, il livello di gravità
dettagliato dei log non viene propagato. Utilizza l'API Java Logging (JUL) standard per registrare i messaggi e propagare i livelli di gravità corretti dei log a Cloud Logging.
Se utilizzi un framework di logging diverso, ad esempio SLF4J, Log4j 2 o Apache Commons Logging, puoi propagare il livello di gravità del log corretto in uno dei seguenti modi:
- Formatta i messaggi di log nel formato JSON con logging strutturato in modo che il livello di gravità venga propagato a Cloud Logging.
- Utilizza un bridge/adattatore per inviare i messaggi di log all'API Java Logging, che propaga già i messaggi di log nel formato corretto. Se adotti questo approccio, assicurati che non esista un adattatore che esegua già il routing dall'API Java Logging al framework di logging.
Se la funzione utilizza librerie diverse e queste utilizzano framework di logging diversi, dovrai configurare ciascuno dei framework di logging utilizzati. Le sezioni seguenti illustrano alcune delle varie opzioni.
Funzione Cloud Run Spring
Se utilizzi la funzione Cloud Run Spring con l'adattatore Google Cloud Spring Cloud Run Functions, puoi generare l'output del log nel formato corretto utilizzando
Logging Starter Google Cloud di Spring Cloud e l'appender CONSOLE_JSON per generare l'output del log in formato JSON. Spring utilizza SLF4J e Logback per impostazione predefinita, ma puoi anche indirizzare i log SLF4J all'API Java Logging. Per ulteriori dettagli, consulta la sezione SLF4J.
API Java Logging (JUL)
Tutti gli ambienti Java supportati di Cloud Run Functions includono Java Logging con un gestore JSON che restituisce il log nel formato corretto. Alcuni framework Java potrebbero aggiungere componenti aggiuntivi per collegare JUL a un framework di logging diverso (ad esempio jul-to-slf4j bridge o Log4j JDK Logging Adapter), nel qual caso i messaggi di log non verranno più formattati correttamente. Se i messaggi di log non hanno livelli di gravità corretti, assicurati che i bridge vengano rimossi.
SLF4J
SLF4J può scrivere i log nell'API Java Logging utilizzando l'associazione del framework di logging slf4j-jdk14. Per ulteriori dettagli, consulta la documentazione di SLF4J. Assicurati di non avere il bridge jul-to-slf4j.
Logback
Logback non dispone di un appender che indirizzi i messaggi di log all'API Java Logging. Tuttavia, Logback viene solitamente utilizzato con l'API SFL4J, quindi puoi passare dall'implementazione del logger SLF4J all'API Java Logging.
Log4j 2
Log4j 2 non dispone di un adattatore diretto che indirizza i messaggi di log all'API Java Logging. Se utilizzi Log4j 2, devi prima indirizzare i messaggi a SLF4J utilizzando l'adattatore da Log4J 2 a SLF4J, quindi configurare SLF4J per utilizzare l'implementazione dell'API Java Logging. Assicurati di non avere l'adattatore di logging JDK Log4j.
Apache Commons Logging (JCL)
Apache Commons Logging ha un adattatore per l'API Java Logging. Configura Commons Logging in modo da utilizzare Jdk14Logger. Per ulteriori informazioni, consulta la pagina Configurazione di Apache Commons Logging.