0Pricing
Python Academy · Aula

Fundamentos do módulo logging

Configure registradores, defina níveis e emita mensagens corretamente.

Fundamentos do módulo logging é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 1 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 Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.

Por que usar o registro de eventos em vez de print?

O módulo logging fornece níveis de gravidade, destinos de saída configuráveis, marcas de data e hora e a possibilidade de silenciar a saída sem alterar o código.

import logging

logging.basicConfig(level=logging.DEBUG)
logging.debug("debug message")
logging.info("info message")
logging.warning("warning message")
logging.error("error message")
logging.critical("critical message")

Níveis de registro

O Python define cinco níveis padrão em ordem crescente de gravidade: DEBUG, INFO, WARNING, ERROR, CRITICAL. Somente as mensagens no nível configurado ou acima dele são emitidas.

import logging
# Numeric values:
# DEBUG    = 10
# INFO     = 20
# WARNING  = 30
# ERROR    = 40
# CRITICAL = 50

logging.basicConfig(level=logging.WARNING)
logging.debug("hidden")   # not shown
logging.warning("shown")  # shown

Obtendo um logger

Use logging.getLogger(__name__) em cada módulo. Isso cria uma hierarquia que corresponde à estrutura dos módulos.

import logging

logger = logging.getLogger(__name__)

def process(data):
    logger.info("Processing %d items", len(data))
    return [x * 2 for x in data]

Opções de basicConfig

basicConfig configura rapidamente o logger raiz. Argumentos nomeados comuns: level, format, filename, filemode.

import logging

logging.basicConfig(
    level=logging.DEBUG,
    format="%(asctime)s %(levelname)s %(name)s — %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
)

Campos do formato de registro

Principais campos de formato: %(levelname)s, %(name)s, %(message)s, %(asctime)s, %(filename)s, %(lineno)d.

import logging

fmt = "%(asctime)s | %(levelname)-8s | %(name)s:%(lineno)d | %(message)s"
logging.basicConfig(level=logging.DEBUG, format=fmt)
logging.info("Server started on port 8080")

Registrando exceções

Use logger.exception() dentro de um bloco except para registrar a mensagem E o rastreamento completo da pilha.

import logging
logger = logging.getLogger(__name__)

try:
    1 / 0
except ZeroDivisionError:
    logger.exception("Division failed")
    # Logs message + traceback automatically

Contexto adicional com extra=

Passe um dict como extra= para adicionar campos personalizados ao registro.

import logging
logger = logging.getLogger(__name__)

logging.basicConfig(
    format="%(asctime)s %(levelname)s [%(user)s] %(message)s"
)
logger.info("Login successful", extra={"user": "alice"})

Formatação tardia de texto

Passe os argumentos de formato separadamente — não formate as strings antecipadamente. Isso evita o custo de criar a string quando a mensagem é filtrada.

import logging
logger = logging.getLogger(__name__)

# BAD (always builds the string):
logger.debug(f"Processing {len(data)} items")

# GOOD (only builds if DEBUG is enabled):
logger.debug("Processing %d items", len(data))

Desativando o registro de eventos

Chame logging.disable(level) para suprimir globalmente todas as mensagens até esse nível — algo útil em testes.

import logging

logging.disable(logging.CRITICAL)  # suppress everything
# All log calls now silently do nothing

logging.disable(logging.NOTSET)    # re-enable

Hierarquia de loggers

Os nomes dos loggers usam pontos como separadores. Os loggers filhos propagam informações para os loggers pai, a menos que propagate=False.

import logging

parent = logging.getLogger("myapp")
child = logging.getLogger("myapp.database")

# child propagates to parent by default
child.warning("DB slow")  # also appears in myapp's handlers

O logger raiz

O logger raiz (de logging.warning() etc.) é o ancestral de todos os loggers. Configure-o com basicConfig ou adicionando manipuladores diretamente.

import logging

root = logging.getLogger()  # root logger
root.setLevel(logging.DEBUG)

handler = logging.StreamHandler()
root.addHandler(handler)

Verificação rápida

Qual método de registro você deve usar dentro de um bloco except para incluir automaticamente o rastreamento completo da pilha?

Recapitulação

Use loggers nomeados com getLogger(__name__), configure-os por meio de basicConfig, passe argumentos de formato de maneira tardia e use logger.exception() para rastreamentos de erros. Os loggers formam uma hierarquia com raiz no logger raiz.

Perguntas Frequentes

A aula “Fundamentos do módulo logging” é grátis?

Sim — o texto completo de “Fundamentos do módulo logging” é 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 Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.

O que vou aprender em “Fundamentos do módulo logging”?

Configure registradores, defina níveis e emita mensagens corretamente. Você pratica Python 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 Python Academy?

Nenhuma experiência prévia é necessária. Python 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 1 de 4.

Quanto tempo leva a aula “Fundamentos do módulo logging”?

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 Python Academy?

Sim. Cada aula de Python 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. Fundamentos do módulo logging
  2. Manipuladores, formatadores e filtros
  3. Registro estruturado
  4. Depuração com pdb
← Voltar para Python Academy