0Pricing
Java Academy · Aula

Configurando o Logback

Appenders, padrões e níveis.

Configurando o Logback é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.

O que é o Logback?

Logback é uma implementação de suporte popular do SLF4J, escrita pelo mesmo autor do Log4j. Ele realiza de fato o registro descrito pelas chamadas do SLF4J.

Você o configura com um arquivo chamado logback.xml no caminho de classes, geralmente em src/main/resources.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        log.info("Logback reads logback.xml at startup");
    }
}

Três componentes básicos

A configuração do Logback tem três conceitos fundamentais:

  • Logger: fonte nomeada de eventos de registro, com um nível.
  • Anexador: um destino, como o console ou um arquivo.
  • Codificador/formato: transforma o evento em texto.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        log.info("logger -> appender -> encoder -> output");
    }
}

Um anexador de console

A configuração mais simples envia tudo para o console. O padrão do codificador controla o formato da linha.

Este XML fica em logback.xml, não no seu código Java.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="info">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Entendendo o padrão

As palavras de conversão do padrão começam com %:

  • %d indica o registro de data e hora; %level, o nível.
  • %logger indica o nome do registrador; %thread, o encadeamento.
  • %msg indica sua mensagem; %n, uma nova linha.

%-5level preenche o lado esquerdo do nível com espaços até a largura 5.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        // Output rendered by pattern: time LEVEL logger - message
        log.info("hello");
    }
}

O registrador raiz e os níveis

O elemento <root> define o nível padrão de toda a aplicação e os anexadores para os quais ela escreve.

Definir level="info" significa que INFO, WARN e ERROR serão emitidos; DEBUG e TRACE serão suprimidos.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
  </appender>
  <root level="warn">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Níveis por pacote

Adicione um elemento <logger> para substituir o nível de um pacote. Assim, você pode ativar DEBUG para seu próprio código e manter as bibliotecas silenciosas.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
  </appender>
  <logger name="com.example.app" level="debug" />
  <root level="info">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Um anexador de arquivo rotativo

Em produção, geralmente você grava em arquivos que alternam diariamente ou por tamanho, para que os registros não cresçam sem limite.

O RollingFileAppender com uma política baseada em tempo cria um arquivo por dia e mantém um histórico limitado.

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>logs/app.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
    <maxHistory>30</maxHistory>
  </rollingPolicy>
  <encoder>
    <pattern>%d %-5level [%thread] %logger{36} - %msg%n</pattern>
  </encoder>
</appender>

Vários anexadores ao mesmo tempo

O registrador raiz pode referenciar vários anexadores, fazendo com que os registros sejam enviados simultaneamente para o console e para um arquivo.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder><pattern>%-5level %msg%n</pattern></encoder>
  </appender>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>logs/app.log</file>
    <encoder><pattern>%d %-5level %msg%n</pattern></encoder>
  </appender>
  <root level="info">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
  </root>
</configuration>

Exibindo o MDC

Para incluir o contexto do MDC, como um identificador de solicitação, em todas as linhas, adicione %X{key} ao padrão.

Então, qualquer valor colocado no MDC aparecerá automaticamente.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        MDC.put("requestId", "req-1234");
        // Pattern: %X{requestId} %-5level %msg%n
        log.info("handled");
        MDC.clear();
    }
}

Aditividade

Por padrão, os eventos de um registrador também são enviados aos anexadores de seus ancestrais. Isso é a aditividade.

Se um registrador de pacote tiver seu próprio anexador e você não quiser uma saída duplicada, defina additivity="false" nele.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
  </appender>
  <logger name="com.example.audit" level="info" additivity="false">
    <appender-ref ref="STDOUT" />
  </logger>
  <root level="warn">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Recarregamento automático e variáveis

O Logback pode recarregar a configuração periodicamente com <configuration scan="true">, o que é útil para alterar níveis sem reiniciar a aplicação.

Você também pode ler propriedades, como um diretório de registros, com marcadores de posição ${LOG_DIR}.

<configuration scan="true" scanPeriod="30 seconds">
  <property name="LOG_DIR" value="logs" />
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${LOG_DIR}/app.log</file>
    <encoder><pattern>%d %-5level %msg%n</pattern></encoder>
  </appender>
  <root level="info"><appender-ref ref="FILE" /></root>
</configuration>

Verificação rápida

Verifique seus conhecimentos sobre a configuração do Logback.

Recapitulação

Você aprendeu a configurar o Logback:

  • A configuração fica em logback.xml, com registradores, anexadores e codificadores.
  • Os padrões formatam linhas com %d, %level, %msg e %X{}.
  • O RollingFileAppender alterna os registros; defina níveis por pacote e a aditividade.
  • Ative scan para a reconfiguração em tempo real.

Você concluiu o curso de registro.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        log.info("Logback configuration course complete");
    }
}

Perguntas Frequentes

A aula “Configurando o Logback” é grátis?

Sim — o texto completo de “Configurando o Logback” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.

O que vou aprender em “Configurando o Logback”?

Appenders, padrões e níveis. Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Java Academy?

Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Configurando o Logback”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Java Academy?

Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Por que usar logging estruturado
  2. Fachada SLF4J e loggers
  3. Logging parametrizado
  4. Configurando o Logback
← Voltar para Java Academy