Logging em aplicações Kotlin: melhores práticas para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Logging em aplicações Kotlin: melhores práticas para iniciantes

\n\n

Logging não é apenas gravar mensagens em um arquivo. É um sistema que ajuda o desenvolvedor a entender o que está acontecendo na aplicação em tempo real, encontrar erros rapidamente e analisar o comportamento dos usuários. Neste artigo, vamos abordar como organizar corretamente o logging em aplicações Kotlin, quais bibliotecas usar e quais erros evitar.

\n\n

Por que o logging é necessário?

\n

O logging resolve várias tarefas principais:

\n
    \n
  • Depuração: permite ver a sequência de chamadas e os valores das variáveis sem usar um depurador.
  • \n
  • Monitoramento: ajuda a acompanhar o estado da aplicação em ambiente de produção.
  • \n
  • Auditoria: registra ações dos usuários e eventos do sistema.
  • \n
  • Desempenho: com logs, é possível identificar gargalos e atrasos.
  • \n
\n\n

Bibliotecas populares para logging em Kotlin

\n

No ecossistema Kotlin e JVM, existem várias soluções consolidadas. Vamos ver as principais:

\n
    \n
  • SLF4J (Simple Logging Facade for Java) — uma fachada que não implementa o logging em si, mas fornece uma API unificada para diferentes implementações (Logback, Log4j2, etc.).
  • \n
  • Logback — a implementação mais popular do SLF4J. Rápida, flexível, com suporte a arquivos rotativos.
  • \n
  • Log4j 2 — uma biblioteca poderosa com suporte a logging assíncrono e filtragem.
  • \n
  • Kotlin Logging — um wrapper conveniente sobre o SLF4J, usando funções inline para minimizar a sobrecarga.
  • \n
\n\n

Configuração do Logback em um projeto Kotlin

\n

Vamos ver a configuração passo a passo do Logback — a solução mais popular para aplicações Kotlin/JVM.

\n\n

Passo 1. Adicionar dependências

\n

No arquivo build.gradle.kts, adicione:

\n
dependencies {\n    implementation("ch.qos.logback:logback-classic:1.4.14")\n    implementation("io.github.microutils:kotlin-logging-jvm:3.0.5")\n}
\n\n

Passo 2. Criar o arquivo de configuração

\n

Crie o arquivo src/main/resources/logback.xml:

\n
<configuration>\n    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">\n        <encoder>\n            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>\n        </encoder>\n    </appender>\n\n    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">\n        <file>logs/app.log</file>\n        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\n            <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>\n            <maxHistory>30</maxHistory>\n        </rollingPolicy>\n        <encoder>\n            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>\n        </encoder>\n    </appender>\n\n    <root level="INFO">\n        <appender-ref ref="CONSOLE"/>\n        <appender-ref ref="FILE"/>\n    </root>\n</configuration>
\n

Esta configuração exibe os logs no console e em um arquivo com rotação diária (os logs são mantidos por 30 dias).

\n\n

Passo 3. Uso no código

\n

Vamos usar a biblioteca kotlin-logging:

\n
import mu.KotlinLogging\n\nprivate val logger = KotlinLogging.logger {}\n\nfun main() {\n    logger.info("Aplicação iniciada")\n    logger.debug { "Valor da variável x = $x" }\n    try {\n        // algum código\n    } catch (e: Exception) {\n        logger.error(e) { "Erro ao executar a operação" }\n    }\n}
\n\n

Níveis de logging: quando usar cada um

\n

A escolha correta do nível é a base para logs legíveis. No Logback, os seguintes níveis estão disponíveis

Blogs

Book Recommendations