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:
- Incluir a biblioteca Logback como uma dependência.
- 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
Depois de ter feito o registro em log mestre, considere as integrações que o Azure oferece em estruturas como Spring e MicroProfile.