Registro con Azure SDK para Java y Logback

En este artículo se proporciona información general sobre cómo agregar el registro con Logback a aplicaciones que usan Azure SDK para Java. Como se menciona en Configuración del registro en Azure SDK para Java, todas las bibliotecas cliente Azure crean sus registros mediante SLF4J, por lo que puede usar plataformas de registro como Logback.

Para habilitar el registro de Logback, debe hacer dos cosas:

  1. Incluir la biblioteca de Logback como una dependencia.
  2. Crear un archivo llamado logback.xml en el directorio del proyecto /src/main/resources.

Para obtener más información sobre la configuración de Logback, consulte el capítulo acerca de la configuración de Logback en la documentación de Logback.

Adición de la dependencia de Maven

Para agregar la dependencia de Maven, incluya el siguiente código XML en el archivo pom.xml del proyecto. Reemplace el número de versión 1.2.3 por el número de versión más reciente que se muestra en la página de módulo clásico de Logback.

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

Adición de logback.xml al proyecto

Logback es una de las plataformas de registro populares. Para habilitar el registro de Logback, cree un archivo llamado logback.xml en el directorio ./src/main/resources del proyecto. Este archivo contiene las configuraciones de registro para personalizar las necesidades de registro. Para obtener más información sobre la configuración de logback.xml, consulte el capítulo acerca de la configuración de Logback en la documentación de Logback.

Registro de consolas

Puede crear una configuración de Logback para registrar en la consola, tal como se muestra en el ejemplo siguiente. Este ejemplo se ha configurado para registrar todos los eventos de registro que tengan el nivel INFO o superior, independientemente de su procedencia.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>
        %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %blue(%logger{100}): %msg%n%throwable
      </Pattern>
    </layout>
  </appender>

  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Registro de errores principales de Azure

La siguiente configuración de ejemplo es similar a la configuración anterior, pero reduce el nivel en el que el registro procede de todas las com.azure.core clases empaquetadas (incluidos los subpaquetes). De este modo, se registran todos los eventos de nivel INFO y superior, excepto en com.azure.core, donde solo se registran los eventos de nivel ERROR y superiores. Por ejemplo, puede usar este enfoque si le parece que el código de com.azure.core genera mucho ruidoso. Este tipo de configuración también puede ir en sentido contrario. Por ejemplo, si desea obtener más información de depuración de las clases de com.azure.core, puede cambiar este valor a DEBUG.

Es posible aplicar un control detallado sobre el registro de clases específicas o paquetes específicos. Como se muestra aquí, com.azure.core controla la salida de todas las clases principales, pero podría usar com.azure.security.keyvault o equivalente igualmente para controlar la salida según corresponda para las circunstancias más informativas en el contexto de la aplicación en ejecución.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%message%n</pattern>
    </encoder>
  </appender>

  <logger name="com.azure.core" level="ERROR" />

  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Registro en un archivo con la rotación de registro habilitada

Los ejemplos anteriores registran en la consola, que normalmente no es la ubicación preferida para los registros. Utilice la siguiente configuración para registrar en un archivo, con sustitución cada hora y archivado en formato gzip:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <property name="LOGS" value="./logs" />
  <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOGS}/spring-boot-logger.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- rollover hourly and gzip logs -->
      <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd-HH}.log.gz</fileNamePattern>
    </rollingPolicy>
  </appender>

  <!-- LOG everything at INFO level -->
  <root level="INFO">
    <appender-ref ref="RollingFile" />
  </root>
</configuration>

Aplicaciones de spring

La plataforma Spring lee en el archivo application.properties de Spring diversas configuraciones, incluida la configuración de registro. También puede configurar la aplicación Spring para que lea las configuraciones de Logback desde cualquier archivo. Para ello, configure la propiedad logging.config de forma que señale al archivo de configuración logback.xml, agregando la siguiente línea al archivo /src/main/resources/application.properties de Spring:

logging.config=classpath:logback.xml

Pasos siguientes

En este artículo se ha tratado la configuración de Logback y cómo hacer que Azure SDK para Java lo use para el registro. Dado que Azure SDK para Java funciona con todos los marcos de registro de SLF4J, considere la posibilidad de revisar el manual del usuario de SLF4J para más detalles. Si utiliza Logback, también puede encontrar una gran cantidad de instrucciones de configuración en su sitio web. Para obtener más información, consulte el capítulo sobre configuración de Logback en la documentación de Logback.

Después de conocer el registro, puede que le interese examinar las integraciones que ofrece Azure en marcos de trabajo como Spring y MicroProfile.