Logging Java

Nel runtime Java, qualsiasi output in STDOUT o STDERR viene propagato in Cloud Logging. Tuttavia, il livello di gravità dei log granulare non viene propagato. Utilizza l'API Java Logging (JUL) standard per registrare i messaggi e propagare i livelli corretti di gravità 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à di log corretto in uno dei seguenti modi:

  • Formatta i messaggi di log nel formato JSON di Logging strutturato in modo che il livello di gravità venga propagato in Cloud Logging.
  • Utilizza un bridge/adattatore per inviare messaggi di log all'API Java Logging, che propaga già i messaggi di log nel formato corretto. Se intraprendi questo approccio, assicurati che non esista un adattatore che instrada già l'API Java Logging al framework di logging.

Se la funzione utilizza librerie diverse e le librerie utilizzano framework di logging diversi, dovrai configurare ciascuno dei framework di logging utilizzati. Le sezioni seguenti illustrano alcune delle varie opzioni disponibili.

Funzione Cloud Functions Functions Spring

Se utilizzi la funzione Cloud Functions di Spring con l'adattatore Google Cloud Spring Cloud Functions, puoi eseguire l'output del log nel formato corretto utilizzando lo strumento Google Cloud Logging Starter di Spring Cloud e l'appender CONSOLE_JSON per generare il log in formato JSON. Spring utilizza SLF4J e Logback per impostazione predefinita, ma puoi anche instradare i log SLF4J all'API Java Logging. Consulta la sezione SLF4J per maggiori dettagli.

API Java Logging (LUG)

Tutti gli ambienti Java di Cloud Functions supportati includono il logging Java 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 bridge jul-to-slf4j o adattatore di logging JDK Log4j), nel qual caso i messaggi di log non saranno più formattati correttamente. Se i messaggi di log non hanno livelli di gravità corretti, assicurati che questi bridge siano rimossi.

SLF4J

SLF4J può scrivere log nell'API Java Logging utilizzando l'associazione del framework di logging slf4j-jdk14. Per informazioni dettagliate, consulta la documentazione di SLF4J. Assicurati di non avere il bridge jul-to-slf4j.

Accedi

Logback non dispone di un appender che instrada i messaggi di log all'API Java Logging. Tuttavia, Logback viene solitamente utilizzato con l'API SFL4J, quindi puoi passare l'implementazione del logger SLF4J all'API Java Logging.

Log4j 2

Log4j 2 non dispone di un adattatore diretto che instrada 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 disporre dell'adattatore di logging JDK di Log4j.

Logging Apache Commons (JCL)

Apache Commons Logging dispone di un adattatore API Java Logging. Configura Commons Logging per utilizzare Jdk14Logger. Per ulteriori informazioni, consulta la pagina sulla configurazione di Apache Commons Logging.