Logging Java

Nel runtime Java, qualsiasi output in STDOUT o STDERR viene propagato a 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 di gravità dei log corretti 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à corretto dei log 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 a Cloud Logging.
  • Utilizza un bridge/adattatore per inviare i messaggi di log all'API Java Logging, che già propaga i messaggi di log nel formato corretto. Se scegli questo approccio, assicurati che non esista già un'entità di adattamento che inoltri già dall'API Java Logging al framework di logging.

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

Funzione Spring Cloud Run

Se utilizzi la funzione Spring Cloud Run con l'adattatore Google Cloud per le funzioni Spring Cloud Run, puoi stampare il log nel formato corretto utilizzando lo starter di Google Cloud Logging di Spring Cloud e l'appender CONSOLE_JSON per stampare il log in formato JSON. Per impostazione predefinita, Spring utilizza SLF4J e Logback, ma puoi anche inoltrare i log SLF4J all'API Java Logging. Per ulteriori dettagli, consulta la sezione SLF4J.

API Java Logging (JUL)

Tutti gli ambienti Java supportati per le funzioni Cloud Run includono la registrazione Java con un gestore JSON che genera il log nel formato corretto. Alcuni framework Java potrebbero aggiungere componenti aggiuntivi per collegare JUL a un altro framework di logging (ad esempio jul-to-slf4j bridge o Log4j JDK Logging Adapter), 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 i ponti vengano rimossi.

SLF4J

SLF4J può scrivere log nell'API Logging di Java utilizzando il binding del framework di logging slf4j-jdk14. Per ulteriori dettagli, consulta la documentazione di SLF4J. Assicurati di non avere il jul-to-slf4j ponte.

Logback

Logback non ha un appender che inoltra 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 inoltra i messaggi di log all'API Java Logging. Se utilizzi Log4j 2, devi prima inoltrare i messaggi a SLF4J utilizzando l'adattatore Log4J 2 a SLF4J, quindi configurare SLF4J per utilizzare l'implementazione dell'API Java Logging. Assicurati di non avere l'adattatore di logging Log4j JDK.

Apache Commons Logging (JCL)

Apache Commons Logging dispone di un'API di adattamento per l'API Logging Java. Configura Commons Logging per utilizzare Jdk14Logger. Per ulteriori informazioni, consulta la pagina Configurazione di Apache Commons Logging.