Compartilhar via


Registrar em log com o SDK do Azure para Java e Logback

Este artigo fornece uma visão geral de como adicionar log usando o Logback para aplicativos que usam o SDK do Azure para Java. Conforme mencionado em Configurar o registro em log no SDK do Azure para Java, todas as bibliotecas de clientes do Azure fazem logon por meio de SLF4J, de modo que você pode usar estruturas de registro em log como Logback.

Para habilitar o registro em log do Logback, faça duas coisas:

  1. Incluir a biblioteca Logback como uma dependência.
  2. Crie um arquivo chamado logback.xml no diretório do projeto /src/main/resources.

Para obter mais informações relacionadas à configuração do Logback, confira Configuração do Logback na documentação do Logback.

Adicionar a dependência do Maven

Para adicionar a dependência maven, inclua o XML a seguir no arquivo pom.xml do projeto. Substitua o número de versão 1.2.3 pelo último número de versão de lançamento mostrado na página do Módulo Clássico do Logback.

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

Adicionar logback.xml ao seu projeto

O Logback é uma das estruturas de registros em log populares. Para habilitar o registro em log do Logback, crie um arquivo chamado logback.xml no diretório ./src/main/resources do seu projeto. Este arquivo contém as configurações de log para personalizar suas necessidades de log. Para obter mais informações sobre como configurar logback.xml, consulte a configuração do Logback na documentação do Logback.

Log de console

Você pode criar uma configuração de Logback para fazer logon no console, conforme mostrado no exemplo a seguir. Este exemplo é configurado para registrar em log todos os eventos de log que são de nível INFO ou superior, de onde quer que eles venham.

<?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>

Registrar erros principais do Azure

A configuração de exemplo a seguir é semelhante à configuração anterior, mas reduz o nível no qual o registro em log vem de todas as classes empacotadas com.azure.core (incluindo subpacotes). Dessa forma, todos os níveis INFO e superiores são registrados em log, exceto por com.azure.core, em que apenas o nível ERROR e superiores são registrados em log. Por exemplo, você pode usar essa abordagem se encontrar o código em com.azure.core muito barulhento. Esse tipo de configuração também pode funcionar nos dois sentidos. Por exemplo, se você quiser obter mais informações de depuração de classes em com.azure.core, poderá alterar essa configuração para DEBUG.

É possível ter controle refinado sobre o registro em log de classes específicas ou pacotes específicos. Conforme mostrado aqui, com.azure.core controla a saída de todas as classes principais, mas você também pode usar com.azure.security.keyvault ou equivalente para controlar a saída conforme apropriado para as circunstâncias mais informativas no contexto do aplicativo em execução.

<?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>

Registrar em log em um arquivo com a rotação de log habilitada

Os exemplos anteriores registram em log no console, que normalmente não é a localização preferida para os logs. Use a seguinte configuração para registrar em log em um arquivo, com substituição por hora e arquivamento no 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>

Aplicativos Spring

A estrutura Spring funciona lendo o arquivo Spring applications.properties para várias configurações, incluindo a configuração de log. No entanto, é possível configurar o aplicativo Spring para ler as configurações de logback de qualquer arquivo. Para fazer isso, configure a propriedade logging.config para apontar para o arquivo de configuração logback.xml adicionando a seguinte linha ao arquivo do Spring /src/main/resources/application.properties:

logging.config=classpath:logback.xml

Próximas etapas

Este artigo abordou a configuração do Logback e como fazer o SDK do Azure Java usá-lo para registro em log. Como o SDK do Azure para Java funciona com todas as estruturas de log SLF4J, considere revisar o manual do usuário do SLF4J para obter mais detalhes. Se você usar o Logback, também haverá uma grande quantidade de diretrizes de configuração em seu site. Para obter mais informações, confira Configuração do Logback na documentação do Logback.

Depois de ter feito o registro em log mestre, considere as integrações que o Azure oferece em estruturas como Spring e MicroProfile.