Saiba o que é logging, qual a sua importância, como implementá-lo no seu sistema, e descubra quais dados devem ser registrados.
Sabia que quando você acessa um programa, os administradores daquele sistema podem registrar todas as atividades que você realizou dentro daquela aplicação? Esse procedimento é chamado de logging, e é imprescindível para aumentar a segurança dos usuários e para otimizar o funcionamento dos softwares.
Neste artigo vamos explicar o que é logging, como aplicá-lo no seu sistema e também revelar quais dados devem ser armazenados e quais não podem ser registrados por questões de segurança.
O Que é Logging e Por Que Ele é Essencial
O logging é o ato de registrar os eventos conforme eles vão acontecendo em um sistema, já o log é o termo usado para se referir aos documentos armazenados. Com esse recurso, é possível evitar fraudes, identificar vulnerabilidades, analisar o comportamento dos usuários e otimizar os processos.
Isso acontece porque o logging possibilita um monitoramento mais eficiente dos sistemas, algo essencial para garantir a segurança do software e dos usuários. Para que esse processo possa ser efetuado, é preciso inserir comandos específicos no código da aplicação, por meio das configurações do sistema.
Existem diferentes níveis de logs, que devem ser aplicados de acordo com o tipo de ação que o administrador deseja registrar. Alguns dos mais comuns são:
- Logs de acesso;
- Logs de segurança;
- Logs de rede;
- Logs de registros do banco de dados.
Por que logs são fundamentais em sistemas modernos?
O ato de registrar eventos que ocorrem em um determinado sistema ou dispositivo é vital para melhorar a eficiência dos processos e para reforçar a segurança. O monitoramento feito por meio dos logs possibilita que atividades suspeitas sejam identificadas em pouco tempo, o que ajuda a prevenir invasões.
Já quando é detectado um erro no sistema, os logs ajudam a identificar o que pode ter causado aquela falha. Além disso, esse mecanismo é primordial para o cumprimento de alguns marcos regulatórios, os quais exigem o registro de dados específicos.
Logs vs monitoramento vs tracing: diferenças essenciais
Em um primeiro momento, os termos logs, monitoramento e tracing podem parecer ser a mesma coisa. No entanto, eles se referem a processos diferentes. Os logs são utilizados para registrar determinados eventos, enquanto o tracing é comumente empregado para rastrear uma jornada completa, muitas vezes fazendo solicitações em múltiplos sistemas para isso.
Por outro lado, o processo de monitoramento consiste em observar um determinado sistema com auxílio de mecanismos como logs e traces.

Para Que Servem os Logs em uma Aplicação
Os registros de logs apresentam várias funcionalidades em uma aplicação, melhorando aspectos como cibersegurança e performance. Sendo assim, confira a seguir alguns exemplos reais de como esse mecanismo pode beneficiar empresas e administradores de sistemas.
Diagnóstico e resolução de problemas
Você provavelmente já deve ter tido a experiência de estar trabalhando tranquilamente em um sistema até começar a perceber que ele parou de responder como esperado. Em alguns casos, é fácil encontrar e solucionar a falha, porém, às vezes é preciso passar dias procurando até encontrar a causa.
Os logs podem facilitar esse processo, pois, como eles documentam tudo o que ocorre na aplicação. Ao analisar esses arquivos será possível identificar facilmente o que pode ter gerado aquela falha, e, dessa forma, resolver o problema em menos tempo e com mais facilidade.
Auditoria e segurança
Os logs também se tornam críticos quando é necessário fazer uma auditoria. O fato de eles armazenarem dados importantes em um só lugar facilita o processo de auditoria e aumenta as chances desse procedimento ser mais bem-sucedido, visto que os auditores estarão em posse de todas as informações necessárias para realizarem o seu trabalho.
Aplicar o logging também aumenta a segurança dos seus sistemas, pois ele possibilita a identificação imediata de atividades suspeitas, dificultando, assim, que dados sensíveis sejam roubados.
Análise de performance e gargalos
Registrar as informações certas de maneira organizada possibilita a identificação de gargalos e vulnerabilidades no sistema, que, uma vez resolvidos, podem contribuir para escalar as aplicações.
Prevenção de falhas e observabilidade
Como é possível registrar qualquer tipo de evento com os logs, ao analisá-los, fica mais fácil identificar eventuais problemas ou comportamentos inesperados que ocorreram durante um determinado período.
Dessa forma, é possível buscar soluções para esses eventos e, assim, prevenir eventuais falhas que podem impactar diretamente o sistema e as atividades da empresa.
Registro histórico para projeções e métricas
O registro de logs permite o fácil acesso a eventos ocorridos em um sistema em um determinado período. Com esses dados, é possível fazer projeções sobre o uso daquele programa em curto, médio e longo prazo, e adequar as operações para que o sistema continue funcionando da maneira esperada em todas as situações possíveis.
Esses dados também possibilitam o estabelecimento de métricas como atingir um determinado número de acessos e de downloads para um período específico.
Tipos de Logs Mais Importantes
Existem métodos de logging específicos para cada tipo de informação que você deseja rastrear. Veja abaixo quais são eles e saiba quando usá-los.
Logs de Erro (error logs)
Empregado para apontar problemas graves, como tentativas de acesso não autorizadas, erros de conexão com banco de dados ou quando o software não foi capaz de executar uma determinada função.
Logs de Aviso (warning)
Estes logs são utilizados para informar que algo inesperado aconteceu e que pode se repetir no futuro, como quando há pouco espaço de memória no dispositivo.
Logs de Informação (info)
Os logs de informação são comumente empregados para confirmar que os processos estão funcionando conforme o esperado.
Logs de Depuração (debug)
O debug fornece informações detalhadas sobre um evento específico, e é muito usado para auxiliar no diagnóstico de problemas.
Logs Críticos (fatal)
Este log indica a ocorrência de um erro grave que forçou o encerramento da aplicação e que necessita da atenção urgente.
Logs estruturados vs logs semiestruturados
Além de existirem métodos de logging diversos, também há logs de diferentes formatos. Os logs estruturados são formados por objetos, que podem incluir variáveis, estruturas e funções. Eles são prioritariamente legíveis por máquinas, sendo ideais para casos de busca e correlação automática. O formato padrão deles é o JSON.
Já os logs semi-estruturados apresentam um formato que pode ser analisado tanto por máquinas quanto por humanos. São formados por objetos e textos livres, e não possuem um formato padrão.
Logs síncronos vs assíncronos (quando usar cada um)
Há ainda os logs síncronos e assíncronos. O primeiro tipo bloqueia a execução do programa enquanto as informações são registradas. Já o segundo faz a gravação em segundo plano enquanto o programa roda.
As mensagens criadas por meio dos logs síncronos são mais confiáveis, pois costumam ser escritas no momento ideal e na forma correta, o que facilita processos de auditoria e de identificação de problemas. Contudo, ele pode causar gargalos no sistema.
Já os logs assíncronos não causam gargalos no sistema, mas podem fazer com que dados importantes sejam perdidos no momento de registro.
A escolha de um desses tipos de logs vai depender de cada sistema e dos tipos de informações que precisam ser registradas. Para programas em que cada log é crítico, o ideal é optar pelos síncronos. Já para as aplicações que demandam alto desempenho, os assíncronos podem ser os mais indicados.
Quando Registrar: O Momento Certo para fazer o logging
O momento certo para fazer o logging vai depender de alguns fatores, como a natureza da informação que precisa ser armazenada, o tipo de sistema e se há alguma programação para fazer uma modificação significativa no software.
Sendo assim, saiba agora em quais momentos você deve considerar a aplicação deste mecanismo.
Antes, durante e após operações sensíveis
Ao planejar qualquer tipo de alteração no seu sistema ou ao programar uma atualização, é importante saber que o ideal é aplicar o processo de logging antes, durante e após a operação.
Dessa forma, será possível verificar se o programa estava funcionando da maneira esperada antes do procedimento, checar se ocorreu algum evento crítico durante a operação e, após a finalização do trabalho, se certificar se o sistema está respondendo da maneira correta.
Eventos inesperados ou anômalos
Sempre que for detectado um evento inesperado, como o encerramento repentino de um programa, é necessário utilizar os logs para identificar a possível causa daquele erro e, assim, conseguir chegar a uma solução de uma maneira mais rápida e fácil.
Fluxos de autenticação e autorização
Para fazer um controle mais efetivo dos usuários que acessam o sistema e que solicitam permissões para realizar determinadas atividades, é essencial deixar registradas todas essas atividades.
Ações iniciadas por usuários
Em sistemas sensíveis ou que estejam relacionados a informações sigilosas, é fundamental registrar as ações realizadas pelos usuários.
Dessa forma, caso seja necessário, o administrador vai conseguir identificar a pessoa responsável por fazer modificações nos arquivos ou por excluir determinados dados.
Além disso, aplicar os mecanismos de logging nesse momento é imprescindível para identificar atividades suspeitas e interrompê-las em tempo hábil.
Em integrações externas e chamadas de API
Implementar o logging em processos de integrações externas também pode contribuir para aumentar o controle sobre o progresso da operação. Assim, será possível identificar rapidamente se ocorreu alguma falha ou se foi registrada alguma atividade suspeita durante a integração.
Casos em que não se deve logar
Apesar de os logs serem essenciais para várias operações, eles devem ser evitados em algumas ocasiões. Uma delas é no processo de inserção das credenciais de acesso, a fim de garantir a segurança dos dados sensíveis dos usuários. Outras informações que não podem ser registradas nesse tipo de procedimento são:
- Tokens de acesso;
- Dados de cartão de crédito ou informações financeiras;
- Dados de conexão de banco de dados;
- Informações de identificação pessoal;
- IDs de sessão e cookies
Como Fazer Logging da Forma Correta
Agora que você já sabe o que é logging e qual é a sua importância, aprenda a seguir como fazer esse processo da maneira correta.
Usar níveis de log de forma consistente
Para conseguir registrar os dados corretos em cada operação e fazer um monitoramento eficaz sempre que for necessário, é preciso escolher o nível de log certo para cada tipo de dado que necessita ser registrado. Veja abaixo quando é indicado usar cada um dos principais níveis:
- INFO: para visualizar atividades que podem ocorrer durante uma operação normal;
- ERROR: expor um erro grave que pode impedir a execução de determinadas funções;
- WARNING: expor um problema grave que necessita de atenção imediata;
- DEBUG: usado quando é necessário obter informações detalhadas para diagnosticar um ou mais problemas.
Padronizar o formato
A fim de padronizar os registros e facilitar a análise dos dados coletados, é recomendável padronizar o formato dos logs. O formato mais utilizado para logs é o JSON, que organiza as informações de um modo semi-estruturado, contendo múltiplos pares de chave-valor (key-value).
Uma das grandes vantagens de optar pelo JSON é que ele pode ser lido tanto por máquinas quanto por humanos. Outros formatos de logs muito utilizados são:
- Common Event Format (CEF): um formato de registro aberto, baseado em texto, muito usado em aplicações de segurança;
- NCSA Common Log Format (CLF): é o formato mais antigo, também sendo baseado em texto. Tem uma estrutura fixa e nem um pouco flexível;
- Extended Log Format (ELF): apesar de ser similar ao CLF, esse modo é capaz de registrar um número maior de informações e também é mais flexível.
Evitar logs excessivos (log noise)
Antes de implementar o logging, é essencial analisar o contexto e os objetivos de cada projeto, para conseguir identificar quais são os logs mais indicados para a situação. Dessa forma, será possível evitar o acúmulo de informações desnecessárias.
Evitar logs insuficientes (missing context)
Assim como é importante evitar o uso excessivo de logs, também é fundamental garantir que não sejam usados menos logs do que o necessário. Portanto, analise bem cada operação para conseguir usar os tipos e a quantidade de logs correta em cada situação.
Como escrever mensagens de log claras, úteis e rastreáveis
Escrever as mensagens de log da forma correta facilita o registro das informações certas e ainda ajuda a otimizar o processo de análise. Confira a seguir algumas dicas práticas de como redigir esses textos:
- Evite mensagens genéricas. Por exemplo, ao invés de escrever apenas ‘ocorreu um erro’, informe o código do erro, a data e a hora do evento e, se for necessário, complemente com outras informações relevantes;
- Adicione contexto às mensagens (IDs, usuário, endpoint, payload) para facilitar o registro das informações certas;
- Utilize metadados sempre que possível;
- Escolha o nível de log adequado para a operação;
- Seja objetivo.
Ferramentas Recomendadas para Logging
Para fazer o processo de logging da maneira adequada, é preciso contar com as ferramentas certas, veja abaixo quais são elas.
Ferramentas básicas
É possível fazer a análise de logs usando ferramentas integradas ao sistema, como o grep ou o awk no Linux, ou o Monitor de Desempenho no Windows.
Outra possibilidade é utilizar bibliotecas específicas de linguagem, como console.log em JavaScript e a biblioteca logging em Python.
Serviços de agregação de logs
O processo de agregação de logs consiste em coletar logs gerados em diferentes sistemas e armazená-los em um mesmo ambiente. Isso facilita a organização, as consultas e o gerenciamento das informações.
Existem ferramentas específicas para fazer a agregação de logs. Conheça agora algumas das mais utilizadas:
- Datadog: uma plataforma baseada em nuvem que possibilita o monitoramento em tempo real de sistemas. Além de fornecer uma infraestrutura para monitorar e organizar logs;
- Grafana Loki: uma ferramenta de código-aberto, escalável e com interface amigável que possibilita a agregação de logs;
- ELK: uma plataforma que possibilita a agregação e monitoramento de logs, além de oferecer recursos de visualização rápida. Apesar de ter muitas funcionalidades, ela consome muitos recursos e não é intuitiva.
Visualização e consulta em dashboards
Todos os softwares de agregação de logs apresentados anteriormente disponibilizam a função de apresentar os dados contidos nos logs em uma interface gráfica, como dashboards, tabelas e gráficos de diferentes formatos.
Sendo assim, você também pode usar essa ferramenta para construir apresentações visuais com a finalidade de apresentar as informações armazenadas nos logs para os mais diferentes públicos.
Como escolher a ferramenta ideal conforme o tamanho da aplicação
Antes de escolher uma ferramenta para registrar e agregar logs, é necessário levar em consideração os seguintes fatores:
- Sistema operacional – no caso do Windows a opção mais utilizada é o Monitor de Desempenho e no Linux o grep ou awk;
- Linguagem – há alternativas em JavaScript e em Python, portanto, é necessário escolher a que seja mais compatível com o seu sistema;
- Já para escolher a plataforma de agregação é preciso considerar a curva de aprendizado, o consumo de recursos e as funcionalidades disponíveis.
Boas Práticas de Logging em Produção
Se você quiser deixar os seus logs mais organizados e não quer de forma alguma registrar dados sensíveis, precisa conhecer as boas práticas de logging.
Reduzir uso de logs verbose
Os logs verbose são registros extremamente detalhados acerca de uma atividade. Apesar de poderem facilitar procedimentos de análise de desempenho, diagnóstico de problemas e de depuração, em alguns casos, eles ocupam muito espaço.
Estes logs geram arquivos muito grandes, que podem impactar o desempenho do sistema. Além disso, não é incomum que eles armazenem dados desnecessários, que tornam a análise mais trabalhosa.
Não registrar dados sensíveis
Para evitar o vazamento dados sensíveis e garantir a conformidade com a Lei Geral de Proteção de Dados, é essencial não registrar as seguintes informações:
- Senhas;
- Tokens de acesso;
- Dados bancários;
- Número de cartão de crédito;
- Dados de identificação pessoal.
Rotacionar logs (log rotation) e gerenciar discos
Fazer a rotação de logs e gerenciar discos é fundamental para assegurar a estabilidade, segurança e desempenho dos sistemas. O processo de rotacionar logs consiste em mover, compactar e excluir registros, liberando, assim, mais espaço de armazenamento e melhorando o desempenho da máquina.
Já o gerenciamento de discos envolve a administração do espaço de armazenamento de um sistema. Esse processo envolve o monitoramento e otimização da área disponível para armazenar logs e outros tipos de arquivos.
Criar padrões de nomenclatura e tags
Uma das principais maneiras de facilitar a organização e a análise dos registros é criar um padrão de nomenclatura e tags específicas para cada tipo de informação. Por exemplo, usar uma tag diferente para cada nível de log.
Implementar correlação entre requisições
Uma forma de assegurar que as suas solicitações sejam executadas da maneira correta é utilizando os IDs de correlação, que acompanham todas as etapas de uma requisição.
Há também os IDs de rastreamento, chamados TraceIDs, capazes de identificar e registrar relações entre diferentes operações. As principais diferenças entre esses dois tipos de IDs são que os IDs de correlação são mais simples, registram poucos dados e são muito utilizados para conectar logs de uma mesma requisição.
Já os TraceIDs são mais complexos, capturam um grande número de dados e são capazes de construir um modelo estruturado de fluxo de requisições. Portanto, dependendo do seu projeto, vale a pena considerar utilizar um desses IDs nas suas solicitações.
Testar logs antes do deploy (logging-driven debugging)
Testar logs antes do deploy é essencial para averiguar a capacidade de depuração e a segurança da aplicação. O ideal é fazer isso em um ambiente local de desenvolvimento, utilizando testes automatizados (CI/CD).
Para garantir a eficácia do log, também vale a pena fazer simulações em ambientes de homologação, usando as mesmas configurações de nível de log e das ferramentas de agregação que serão usadas no cenário real.
Antes de iniciar o teste, certifique-se de que os seus logs estão bem estruturados, com os níveis corretos, sem pedidos de registro de informações sensíveis e que apresentem um contexto amplo.
Como Configurar Logging por Linguagem
Para facilitar o seu processo de logging, vamos mostrar a seguir como configurar os logs em diferentes tipos de linguagem.
Logging em Python (logging module)
Para configurar o logging em Python basta importar o módulo da ferramenta utilizando o seguinte comando: import logging.
A forma mais simples de executar os registros é usando a seguinte configuração:
logging.levelname(mensagem)
Por exemplo: logging.debug(mensagem que aparecerá no arquivo de log).
Caso você precise inserir mais variáveis, use a seguinte estrutura:
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s - %(levelname)s - %(message)s",
filename="meu_log.log",
filemode="w")
Logging em JavaScript/Node.js
A maneira mais simples de fazer essa configuração é usando o console.log no Node.js. Para isso, basta utilizar o seguinte comando:
console.log(mensagem)
Importante ressaltar que este método não é capaz de organizar os logs por nível.
Se você precisa aplicar os níveis no processo de logging, a melhor opção é utilizar a biblioteca Winston, que também está dentro do Node.js. Para instalá-la é preciso usar a requisição abaixo:
npm install winston
Em seguida, será preciso importar o pacote para a sua aplicação Node.js usando o seguinte comando:
import winston from 'winston'
Após fazer a importação. Você já poderá registrar os logs utilizando os níveis, como no exemplo abaixo:
import logger from './logger.js';
logger.info('Info message');
logger.error('Error message');
logger.warn('Warning message');
Logging em Java (Logback)
O primeiro passo para fazer essa implementação de logging é importar as dependências ao pom.xml do arquivo usando o seguinte comando:
<dependencies>
<!-- API do SLF4J -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.13</version>
</dependency>
<!-- Implementação: Logback -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.6</version>
</dependency>
</dependencies>
Em seguida, você poderá começar a usar o logging na sua classe Java, como no exemplo abaixo:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class App {
private static final Logger logger =
LoggerFactory.getLogger(App.class);
public static void main(String[] args) {
logger.info("Aplicação iniciada");
logger.warn("Atenção: algo pode estar errado");
logger.error("Erro crítico de exemplo");
logger.debug("Mensagem de debug detalhada");
}
}
Logging em Go (zap, Zerolog)
O Go já vem com uma ferramenta de logging integrada no pacote, para ativá-la basta usar o comando:
package main
import (
"log/slog"
"os"
)
func main() {
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
logger.Info("Servidor iniciado",
"port", 8080,
"env", "production",
)
logger.Error("Falha ao conectar ao banco de dados",
"retry", true,
)
}
Contudo, se você quiser fazer a configuração em Go usando bibliotecas de terceiros, como Zap e Zerolog, utilize o comando abaixo:
package main
import (
"os"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
func main() {
log.Logger = zerolog.New(os.Stdout).With().Timestamp().Logger()
log.Info().
Int("port", 8080).
Str("env", "production").
Msg("Servidor iniciado")
log.Error().
Bool("retry", true).
Msg("Falha ao conectar ao banco de dados")
}
Logging em PHP (Monolog)
A solução mais utilizada para configurar o logging em PHP é a Monolog. Para implementá-la é necessário, primeiro, localizar o arquivo php.ini, então, será preciso fazer a configuração utilizando o seguinte comando:
<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
require 'vendor/autoload.php';
// Criar o logger
$log = new Logger("meuapp");
// Definir para onde vai o log (arquivo)
$log->pushHandler(new StreamHandler(__DIR__ . '/app.log', Logger::DEBUG));
// Fazer alguns logs
$log->info("Aplicação iniciada");
$log->warning("Atenção: algo pode estar estranho");
$log->error("Erro crítico no sistema");
Exemplos de Boas Mensagens de Log
Caso você ainda tenha alguma dúvida sobre como deve ser uma mensagem de log, confira a seguir alguns exemplos práticos.
Exemplos simples
Se você quiser escrever uma mensagem simples, que não esteja vinculada a nenhuma linguagem específica e que não necessita de contexto, você poderá redigi-las da seguinte forma:
- INFO – “Arquivo ‘relatório.csv’ importado em 2.s”;
- WARNING – “Tentativa de login com senha antiga para o usuário 98”;
- ERROR – “Não foi possível processar o arquivo relatório.csv”.
Exemplos com contexto adicional
Veja agora como ficariam as mensagens apresentadas anteriormente se fosse necessário acrescentar contexto:
- INFO – “Arquivo ‘relatório.csv’ importado, tamanho=12MB, user_id=100, armazenamento= ‘S5’ duração: 2.s”;
- WARNING – “Tentativa de login com senha antiga para o user_id=100, tempo 1.s, origem ‘servidor-us-east-2””;
- ERROR – “Não foi possível processar o arquivo relatório.csv, motivo = ‘armazenamento insuficiente’, user_id=100”.
Logging, Observabilidade e Monitoramento
Saiba agora como os logs podem contribuir efetivamente para os processos de acompanhamento de métricas e monitoramento.
Como logs se integram a métricas e traces
Os logs, métricas e traces se complementam em um trabalho de análise de sistemas. Com as métricas é possível avaliar o desempenho de diferentes tipos de processos.
Já os logs possibilitam que seja possível compreender o que aconteceu durante cada uma das etapas e os traces servem para que o analista possa entender porque as ações ocorreram daquela maneira.
Por que o logging é o pilar mais acessível da observabilidade?
O mecanismo de logging é o pilar mais acessível da observalidade porque essa é uma das formas mais fáceis e tradicionais de obter informações úteis relacionadas a um sistema.
Perguntas Frequentes sobre Logging
Ainda tem alguma dúvida sobre o que é logging? Então, veja abaixo as respostas para algumas das perguntas mais comuns sobre esse tema.
Como saber se estou logando demais?
Caso você notar problemas de desempenho e de armazenamento, e perceber que está guardado arquivos de log grandes demais, pode ser um sinal de que está fazendo logging de maneira excessiva.
Logging deixa o sistema mais lento?
O logging síncrono pode deixar o sistema mais lento, visto que ele interrompe a execução do programa enquanto faz o registro.
É seguro registrar IP, email e requisições?
O registro de IPs, e-mails e requisições pode ser feito, desde que haja base legal para isso, e que sejam adotadas normas de proteção adequadas, conforme a LGPD.
Quantos níveis de log eu realmente preciso?
É preciso avaliar cada sistema individualmente para determinar quais logs são necessários. Contudo, os mais básicos e utilizados são INFO, ERROR e DEBUG.
Qual o formato ideal de log hoje?
Não existe um formato de log ideal, pois essa escolha vai variar de acordo com cada sistema e usuário.
Conclusão
Saber o que é logging, como fazer e qual a sua importância é fundamental para quem deseja ter mais controle sobre o próprio sistema. Sendo assim, considere começar a registrar as atividades das suas aplicações o quanto antes.
Para mais conteúdos sobre gerenciamento de sistemas, continue no blog da HostGator e confira mais artigos sobre esse tema:
