0Pricing
Python Academy · Aula

Manipuladores, formatadores e filtros

Direcione a saída dos registros para arquivos, fluxos e destinos personalizados.

Manipuladores, formatadores e filtros é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 2 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.

Manipuladores encaminham registros

Um manipulador envia registros para um destino: console, arquivo, endpoint HTTP etc. Um logger pode ter vários manipuladores.

import logging

logger = logging.getLogger("myapp")
logger.setLevel(logging.DEBUG)

sh = logging.StreamHandler()
logger.addHandler(sh)

logger.info("Goes to console")

StreamHandler

StreamHandler grava em um fluxo (por padrão, sys.stderr). Passe sys.stdout para obter saída em stdout.

import logging, sys

logger = logging.getLogger("out")
handler = logging.StreamHandler(sys.stdout)
logger.addHandler(handler)
logger.warning("printed to stdout")

FileHandler

FileHandler acrescenta registros a um arquivo. Use mode="w" para sobrescrever o arquivo a cada execução.

import logging

logging.basicConfig(
    filename="app.log",
    filemode="a",
    level=logging.INFO,
    format="%(asctime)s %(levelname)s %(message)s"
)
logging.info("Persisted to disk")

RotatingFileHandler

Gire automaticamente os arquivos de registro quando eles excederem um limite de tamanho, mantendo N arquivos de backup.

from logging.handlers import RotatingFileHandler
import logging

handler = RotatingFileHandler(
    "app.log", maxBytes=1_000_000, backupCount=5
)
logging.getLogger().addHandler(handler)

TimedRotatingFileHandler

Gire os arquivos de registro conforme uma programação — diariamente, semanalmente ou a cada hora —, uma opção ideal para serviços de longa duração.

from logging.handlers import TimedRotatingFileHandler
import logging

handler = TimedRotatingFileHandler(
    "app.log", when="midnight", backupCount=7
)
logging.getLogger().addHandler(handler)

Formatadores

Um Formatter controla o layout de texto de cada registro. Anexe-o a um manipulador com handler.setFormatter().

import logging

fmt = logging.Formatter(
    fmt="%(asctime)s %(levelname)-8s %(name)s — %(message)s",
    datefmt="%Y-%m-%dT%H:%M:%S"
)
handler = logging.StreamHandler()
handler.setFormatter(fmt)
logging.getLogger().addHandler(handler)

Filtragem no nível do manipulador

Cada manipulador tem seu próprio nível. Um registro precisa passar tanto pelo nível do logger quanto pelo nível do manipulador para ser emitido.

import logging

logger = logging.getLogger("app")
logger.setLevel(logging.DEBUG)   # logger passes DEBUG+

err_handler = logging.FileHandler("errors.log")
err_handler.setLevel(logging.ERROR)  # only ERROR+
logger.addHandler(err_handler)

Filtros personalizados

Crie uma subclasse de logging.Filter e substitua filter(record) para aceitar ou rejeitar registros com base em qualquer critério.

import logging

class SensitiveFilter(logging.Filter):
    def filter(self, record):
        return "password" not in record.getMessage().lower()

handler = logging.StreamHandler()
handler.addFilter(SensitiveFilter())
logging.getLogger().addHandler(handler)

Adicionando campos extras com um filtro

Os filtros também podem alterar o registro para inserir campos adicionais (por exemplo, um ID de solicitação) antes da formatação.

import logging

class RequestIDFilter(logging.Filter):
    def __init__(self, request_id):
        self.request_id = request_id
    def filter(self, record):
        record.request_id = self.request_id
        return True

# fmt: "%(request_id)s %(message)s"

Vários manipuladores em um logger

Adicione vários manipuladores para enviar os mesmos registros a vários destinos simultaneamente.

import logging

logger = logging.getLogger("multi")
logger.addHandler(logging.StreamHandler())             # console
logger.addHandler(logging.FileHandler("audit.log"))   # file
logger.setLevel(logging.INFO)
logger.info("Both destinations receive this")

Desativando a propagação

Defina logger.propagate = False para impedir que os registros subam até o logger raiz e sejam registrados duas vezes.

import logging

logger = logging.getLogger("mylib")
logger.propagate = False   # stays here, does not reach root
logger.addHandler(logging.StreamHandler())

Verificação rápida

Qual método anexa um Formatter a um Handler?

Recapitulação

Os manipuladores encaminham registros; os formatadores definem seu estilo; os filtros os deixam passar ou bloqueiam seletivamente. Use RotatingFileHandler para registros limitados por tamanho e TimedRotatingFileHandler para rotação baseada em datas.

Perguntas Frequentes

A aula “Manipuladores, formatadores e filtros” é grátis?

Sim — o texto completo de “Manipuladores, formatadores e filtros” é 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 “Manipuladores, formatadores e filtros”?

Direcione a saída dos registros para arquivos, fluxos e destinos personalizados. 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 2 de 4.

Quanto tempo leva a aula “Manipuladores, formatadores e filtros”?

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