Compartilhar via


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

Este artigo apresenta uma visão geral de como adicionar o registro em log usando o Logback a 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. Inclua a biblioteca do 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 do 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 o logback.xml ao seu projeto

O Logback é uma das estruturas de registro 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. Esse arquivo contém as configurações de log para personalizar suas necessidades de log. Para obter mais informações sobre como configurar o logback.xml, confira Configuração do Logback na documentação do Logback.

Log de console

Você pode criar uma configuração do Logback para registrar em log no console conforme mostra o exemplo a seguir. Este exemplo é configurado para registrar em log todos os eventos de log que estão no nível INFO ou superior, não importa a origem.

<?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 em log os erros principais do Azure

A configuração de exemplo a seguir é semelhante à configuração anterior, mas reduz o nível em que o log vem de todas as com.azure.core classes empacotadas (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ê poderá usar essa abordagem se considerar o código em com.azure.core muito ruidoso. Esse tipo de configuração também pode ser usado 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 um controle refinado sobre o log de classes específicas ou de pacotes específicos. Como mostrado aqui, controla a saída de todas as classes principais, com.azure.core mas você pode igualmente usar com.azure.security.keyvault ou equivalente para controlar a saída conforme apropriado para as circunstâncias que são 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 no console, que normalmente não é o local preferencial para 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 registro em log do SLF4J, considere examinar o manual do usuário do SLF4J para obter mais detalhes. Se você usa o Logback, também há uma grande quantidade de diretrizes de configuração no 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.