Logging em Python para iniciantes

Tempo de leitura: 11 minutos

Você já se sentiu perdido tentando entender por que seu código não funciona ou por que um erro estranho apareceu do nada? Quando começamos a aprender a programar, é comum usarmos o comando print para conferir o valor de uma variável. No entanto, à medida que seus projetos crescem, o Logging em Python para iniciantes se torna uma ferramenta indispensável. Diferente de um simples print, o logging permite registrar eventos, erros e fluxos de execução de forma organizada, profissional e muito mais eficiente para o monitoramento de sistemas em tempo real.

Imagine que você construiu um sistema complexo que roda em um servidor. Se ele parar de funcionar no meio da noite, você não conseguirá ver a tela do console para ler os prints. É aqui que entra o módulo logging, uma biblioteca padrão do Python que grava essas informações em arquivos, permitindo que você investigue problemas retroativamente. Neste guia, vamos explorar desde os conceitos básicos até as configurações avançadas para transformar você em um mestre do rastreamento de dados.

O que é Logging e por que não usar apenas o Print?

O conceito de logging refere-se ao ato de manter um registro (log) de eventos que ocorrem durante a execução de um software. Muitos iniciantes utilizam exaustivamente o comando print para entender o que acontece no script. Embora funcione em scripts pequenos, essa abordagem apresenta falhas graves em aplicações reais. Primeiramente, o print envia dados apenas para a saída padrão (o terminal). Se o terminal for fechado, a informação desaparece.

Além disso, o logging oferece níveis de severidade. Você pode definir que apenas mensagens de erro críticas sejam salvas, ignorando avisos menores. Isso é essencial para manter a clareza. Outro ponto crucial é a facilidade de incluir carimbos de data e hora (timestamps) automaticamente, algo fundamental para o Logging em Python para iniciantes. Com o print, você teria que formatar manualmente cada mensagem para incluir o horário, o que torna o código sujo e difícil de manter.

Os Níveis de Mensagens no Logging

Para utilizar o logging de forma eficaz, você precisa conhecer a hierarquia de severidade. O Python define cinco níveis padrão, cada um servindo a um propósito específico durante o ciclo de vida do desenvolvimento. Compreender esses níveis ajuda a filtrar o que é realmente importante em seus registros.

  • DEBUG: Informações detalhadas, úteis apenas para diagnosticar problemas durante o desenvolvimento.
  • INFO: Confirmação de que as coisas estão funcionando como esperado (ex: “Servidor iniciado”).
  • WARNING: Uma indicação de que algo inesperado aconteceu, ou um problema em potencial (ex: “Espaço em disco baixo”).
  • ERROR: Devido a um problema mais grave, o software não conseguiu executar alguma função.
  • CRITICAL: Um erro grave, indicando que o próprio programa pode não conseguir continuar rodando.

Por padrão, o Python exibe apenas mensagens do nível WARNING para cima. Se você tentar emitir um log do tipo DEBUG sem configurar a biblioteca, nada aparecerá no seu terminal. Essa é uma medida de segurança para evitar que logs excessivos poluam a produção.

Configuração Básica do Logging em Python para iniciantes

Vamos colocar a mão na massa. Para começar a usar o logging, você não precisa instalar nada, pois o módulo já vem embutido na linguagem. O primeiro passo é importar o módulo e realizar uma configuração mínima usando a função basicConfig(). Este método define o comportamento global do seu sistema de logs.

Python
import logging

# Configuração simples
logging.basicConfig(level=logging.DEBUG)

logging.debug("Isso é uma mensagem de depuração")
logging.info("O programa iniciou com sucesso")
logging.warning("Ops, algo pode dar errado")
logging.error("Ocorreu um erro na conexão")
logging.critical("O sistema parou de funcionar!")

No código acima, ao definirmos level=logging.DEBUG, estamos dizendo ao Python que queremos ver absolutamente tudo, desde os mínimos detalhes até os erros críticos. Se alterássemos para ERROR, as mensagens de DEBUG, INFO e WARNING seriam ignoradas e não apareceriam na tela.

Salvando Logs em Arquivos

Uma das maiores vantagens do Logging em Python para iniciantes é a capacidade de persistir os dados em um arquivo físico (geralmente com extensão .log). Isso permite que você feche seu debugger no VS Code e, mesmo assim, tenha acesso ao que aconteceu horas depois. Para isso, adicionamos o parâmetro filename na configuração inicial.

Python
import logging

logging.basicConfig(
    filename='app_sistema.log',
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

logging.info("Registro de usuário realizado.")
logging.error("Falha ao salvar dados no banco.")

Observe o parâmetro format. Ele é extremamente poderoso. Usamos “placeholders” como %(asctime)s para inserir a data automática e %(levelname)s para mostrar se é um erro ou info. Ao rodar esse código, um arquivo chamado app_sistema.log será criado na sua pasta, contendo todo o histórico estruturado.

Melhorando o Formato das Mensagens com F-Strings

Embora o logging tenha sua própria forma de formatar textos, muitas vezes queremos incluir valores de variáveis dinâmicas. Nesses casos, saber como usar f-strings em Python é um diferencial. Elas tornam a leitura do log muito mais amigável para o desenvolvedor que precisará ler o arquivo depois.

De acordo com a documentação oficial do Python, a biblioteca de logging é uma das mais flexíveis da linguagem, permitindo a integração com serviços externos de monitoramento. Utilizar f-strings dentro dos comandos de log ajuda a registrar estados específicos de objetos de maneira clara, como por exemplo: logging.info(f"O usuário {id_usuario} acessou o sistema").

Capturando Exceções com Logging

Um erro comum entre iniciantes é usar o bloco try/except e apenas imprimir o erro. No entanto, em um ambiente profissional, você deve registrar o “Traceback” completo (a pilha de erros). O módulo logging facilita isso com o parâmetro exc_info ou o método logging.exception().

Python
import logging

logging.basicConfig(level=logging.ERROR)

try:
    resultado = 10 / 0
except ZeroDivisionError:
    # O método exception captura o erro automaticamente
    logging.exception("Erro matemático detectado:")

Ao usar logging.exception() dentro de um bloco try-except em Python, o sistema grava não apenas a mensagem que você escreveu, mas toda a árvore de erros que levou ao problema. Isso economiza horas de investigação, pois aponta exatamente a linha e o arquivo onde a falha ocorreu.

Boas Práticas de Logging para Projetos Reais

Para que seu sistema de Logging em Python para iniciantes seja escalável, é importante seguir algumas diretrizes da comunidade, muitas vezes citadas em fóruns como o Stack Overflow. A primeira dica é nunca logar informações sensíveis, como senhas, tokens de API ou dados pessoais de usuários. Isso pode gerar vulnerabilidades graves de segurança.

Outra prática essencial é a criação de loggers específicos para cada módulo da sua aplicação. Em vez de usar apenas o logging.info() genérico, você pode criar uma instância com o nome do módulo: logger = logging.getLogger(__name__). Isso ajuda a identificar de qual parte do software a mensagem está vindo, facilitando a organização em sistemas que possuem muitos arquivos.

Também é recomendável utilizar o parâmetro filemode='a' (append) na configuração básica para garantir que o arquivo de log não seja sobrescrito toda vez que o programa iniciar, acumulando assim um histórico contínuo.

Estrutura Avançada: Handlers e Formatters

Se você deseja levar o Logging em Python para iniciantes para o próximo nível, precisa entender os Handlers. Eles permitem que você direcione as mensagens para múltiplos lugares simultaneamente. Por exemplo, você pode querer que as mensagens de erro apareçam no terminal para o desenvolvedor ver, mas que todas as mensagens (incluindo INFO) sejam salvas em um arquivo.

ComponenteFunção
LoggersA porta de entrada para emitir as mensagens.
HandlersEnvia os registros para o destino (arquivo, console, e-mail).
FiltersDetermina quais registros devem ser ignorados.
FormattersDefine o estilo visual e as informações presentes na mensagem.

Essa modularidade permite criar fluxos complexos, como enviar um e-mail de alerta automático toda vez que um erro de nível CRITICAL for detectado, enquanto o restante do sistema continua operando e salvando dados localmente.

Exemplo de Projeto: Sistema de Monitoramento de Temperatura

Para consolidar o que aprendemos sobre Logging em Python para iniciantes, vamos simular um script que monitora a temperatura de um servidor. Ele usará níveis de log para informar o estado atual e registrar problemas caso a temperatura suba demais.

Etapa 1: Configurando o Logger e Handlers

Nesta fase inicial, definimos como o sistema deve se comportar. Queremos que as mensagens apareçam no console para acompanhamento imediato.

Python
import logging
import random
import time

# Criando um logger customizado
logger = logging.getLogger("MonitorTermico")
logger.setLevel(logging.DEBUG)

# Criando um handler para o console
console_handler = logging.StreamHandler()
console_format = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(console_format)
logger.addHandler(console_handler)

Etapa 2: Criando a Lógica de Monitoramento

Aqui, simulamos a leitura de sensores. Usamos INFO para leituras normais e WARNING ou ERROR quando os limites de segurança são ultrapassados.

Python
def verificar_temperatura():
    # Simulando um sensor com numeros aleatórios
    # Poderia usar o módulo random para isso
    temp = random.randint(20, 100)
    
    if temp < 70:
        logger.info(f"Temperatura estável: {temp}°C")
    elif 70 <= temp < 90:
        logger.warning(f"Temperatura elevada: {temp}°C. Verifique a ventilação.")
    else:
        logger.error(f"ALERTA CRÍTICO: Temperatura em {temp}°C! Desligando sistemas.")

# Loop de simulação
for _ in range(5):
    verificar_temperatura()
    time.sleep(1)

Código Completo do Projeto

Abaixo está o código unificado do monitor de temperatura. Você pode copiar e colar em seu editor para testar como os diferentes níveis de log se comportam no terminal.

Python
import logging
import random
import time

# 1. Configuração do Sistema de Log
logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s - [%(levelname)s] - %(message)s',
    handlers=[
        logging.FileHandler("monitor_temperatura.log"),
        logging.StreamHandler()
    ]
)

def rodar_monitor():
    logging.info("Iniciando monitoramento de hardware...")
    
    try:
        while True:
            # Simula leitura de sensor
            temperatura = random.uniform(30.0, 105.0)
            
            if temperatura < 60:
                logging.debug(f"Leitura precisa: {temperatura:.2f}°C")
                logging.info("Sistema operando em temperatura ideal.")
            elif 60 <= temperatura < 85:
                logging.warning(f"Aquecimento detectado: {temperatura:.2f}°C. Aumentando coolers.")
            else:
                logging.error(f"PERIGO! Temperatura de {temperatura:.2f}°C ultrapassou limite seguro!")
                break # Interrompe por segurança
                
            time.sleep(1)
            
    except KeyboardInterrupt:
        logging.info("Monitoramento encerrado pelo usuário.")
    except Exception as e:
        logging.critical(f"Falha catastrófica no sensor: {e}", exc_info=True)

if __name__ == "__main__":
    rodar_monitor()

Dominar o logging é um passo fundamental para quem deseja sair do nível básico e entrar no desenvolvimento de software profissional. Ele não substitui os testes unitários, mas oferece a visibilidade necessária para manter sistemas rodando com segurança. Ao aplicar essas técnicas em seus exercícios de Python, você criará hábitos de programação que são altamente valorizados no mercado de trabalho.

Perguntas Frequentes

O logging deixa o programa Python mais lento?

Sim, escrever logs consome recursos, especialmente se o volume de dados for imenso. No entanto, é possível configurar o logging para ser assíncrono ou limitar o nível de log em produção para minimizar esse impacto.

Posso usar logging em scripts de Automação?

Com certeza. O uso de automação com Python exige logs para que você saiba se a tarefa foi concluída com sucesso enquanto você não estava olhando para o computador.

Qual a diferença entre logging.error() e logging.exception()?

O logging.error() apenas grava a mensagem de erro fornecida. O logging.exception() grava a mensagem e anexa automaticamente o traceback (detalhes técnicos do erro).

Como apagar os logs antigos automaticamente?

Você pode usar o RotatingFileHandler do módulo logging.handlers. Ele limita o tamanho do arquivo e cria um novo quando o limite é atingido, apagando os mais antigos.

É possível enviar logs para um banco de dados?

Sim, você pode criar um Handler customizado para salvar mensagens no MySQL, SQLite ou qualquer outro banco de dados, embora arquivos de texto sejam o padrão pela simplicidade.

Posso configurar o logging usando arquivos JSON ou YAML?

Sim, o Python permite carregar configurações de log a partir de dicionários ou arquivos externos, o que facilita a alteração de níveis de log sem mexer no código-fonte principal.

Onde os arquivos .log ficam salvos?

Se você não especificar um caminho completo, eles serão salvos no mesmo diretório/pasta onde o seu script Python está sendo executado.

Existem bibliotecas externas melhores que o módulo padrão?

Existem bibliotecas como o Loguru que simplificam ainda mais a sintaxe, mas para iniciantes, aprender o módulo nativo logging é essencial por ser o padrão de mercado.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Fundamentos
    Foto do Leandro Hirt

    Como usar o módulo time em Python para iniciantes

    O tempo é um dos recursos mais preciosos em qualquer aplicação tecnológica. Seja para medir o desempenho de uma função,

    Ler mais

    Tempo de leitura: 11 minutos
    14/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Por que seu script trava? Descubra o Threading no Python

    Você já sentiu a frustração de rodar um código e, de repente, a interface parar de responder ou o terminal

    Ler mais

    Tempo de leitura: 8 minutos
    13/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Operações matemáticas com o módulo math em Python

    O módulo math é uma das ferramentas mais poderosas e essenciais para quem está começando a aprender programação. Ao realizar

    Ler mais

    Tempo de leitura: 8 minutos
    13/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Como fazer backup automático de arquivos com Python

    Garantir a segurança dos seus dados é uma das tarefas mais importantes no dia a dia de qualquer pessoa que

    Ler mais

    Tempo de leitura: 8 minutos
    12/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Entendendo o módulo sys em Python e para que ele serve

    O universo da programação oferece ferramentas poderosas que muitas vezes passam despercebidas pelos iniciantes. Uma dessas ferramentas é o módulo

    Ler mais

    Tempo de leitura: 9 minutos
    11/02/2026
    Fundamentos
    Foto do Leandro Hirt

    Introdução ao Módulo itertools em Python

    Se você já sentiu que seus loops estão ficando bagunçados ou que está escrevendo código demais para realizar tarefas simples

    Ler mais

    Tempo de leitura: 9 minutos
    11/02/2026