Java Logging

En el entorno de ejecución de Java, cualquier salida de STDOUT o STDERR se propaga a Cloud Logging. Sin embargo, el nivel de gravedad del registro detallado no se propaga. Usa la API de Java Logging (JUL) estándar para registrar mensajes y propagar los niveles de gravedad de registro correctos a Cloud Logging.

Si usas un framework de registro diferente, como SLF4J, Log4j 2 o Apache Commons Logging, puedes propagar el nivel de gravedad de registro correcto de una de las siguientes maneras:

  • Formatea los mensajes de registro en el formato JSON de registro estructurado para que el nivel de gravedad se propague a Cloud Logging.
  • Usa un puente/adaptador para enviar mensajes de registro a la API de Java Logging, que ya propaga los mensajes de registro en el formato correcto. Si adoptas este enfoque, asegúrate de que no haya un adaptador que enrute de la API de Java Logging al framework de registro.

Si tu función usa bibliotecas diferentes y las bibliotecas usan frameworks de registro distintos, deberás configurar cada uno de los frameworks de registro utilizados. Las siguientes secciones abarcan algunas de las distintas opciones.

Función Spring Cloud Run

Si usas la función Spring Cloud Run con el adaptador de Google Cloud de Spring Cloud Run Functions, puedes generar el registro en el formato correcto con el Iniciador de Google Cloud Logging de Spring Cloud y el adjuntador de CONSOLE_JSON para generar el registro en formato JSON. Spring usa SLF4J y Logback de forma predeterminada, pero también puedes enrutar los registros de SLF4J a la API de Java Logging. Consulta la sección SLF4J para obtener más información.

API de Java Logging (JUL)

Todos los entornos de Java compatibles con Cloud Run Functions incluyen Java Logging con un controlador JSON que genera el registro en el formato correcto. Es posible que algunos frameworks de Java agreguen componentes adicionales para unir JUL a un framework de registro diferente (como puente jul-to-slf4j o Log4j JDK Logging Adapter). En ese caso, esos mensajes de registro ya no tendrán el formato correcto. Si tus mensajes de registro no tienen niveles de gravedad correctos, asegúrate de quitar esos puentes.

SLF4J

SLF4J puede escribir registros en la API de Java Logging mediante la vinculación del framework de registro slf4j-jdk14. Consulta la documentación de SLF4J para obtener más información. Asegúrate de no tener el puente jul-to-slf4j.

Logback

Logback no tiene un adjuntador que enrute los mensajes de registro a la API de Java Logging. Sin embargo, Logback generalmente se usa con la API de SLF4J, por lo que puedes cambiar la implementación del registrador de SLF4J a la API de Java Logging.

Log4j 2

Log4j 2 no tiene un adaptador directo que enrute los mensajes de registro a la API de Java Logging. Si usas Log4j 2, primero debes enrutar los mensajes a SLF4J con el Adaptador de Log4J 2 a SLF4J y, luego, configurar SLF4J para usar la implementación de la API de Java Logging. Asegúrate de no tener el Log4j JDK Logging Adapter.

Apache Commons Logging (JCL)

Apache Commons Logging tiene un adaptador de API de Java Logging. Configura Commons Logging para usar Jdk14Logger. Consulta la página de configuración de Apache Commons Logging para obtener más información.