Dev / Observabilidade

Regex para logs: níveis, datas, IDs e grupos

Logs são um dos melhores usos reais de Regex: normalmente você quer localizar linhas, extrair campos e investigar incidentes rapidamente.

Ideia central: Regex valida ou encontra padrões de texto. Quando houver regra de negócio, cálculo ou semântica, use código complementar em vez de forçar tudo para dentro da expressão.
EM 30 SEGUNDOS

O que você precisa decidir antes do padrão

Regex é especialmente útil em logs quando a linha tem uma estrutura conhecida e você quer extrair timestamp, nível, request ID ou outros campos.

Pense no problema antes de escrever Regex

Um padrão fica mais simples quando a regra já está clara. Para este caso, siga esta sequência:

  1. 01Comece com uma linha real de log e marque visualmente cada campo necessário.
  2. 02Use grupos nomeados para evitar depender da ordem de muitos grupos numerados.
  3. 03Prefira formatos de log estruturados, como JSON, quando você controla a origem.

Filtrar níveis de log

^(?:INFO|WARN|ERROR)\b

A âncora evita encontrar ERROR no meio de uma mensagem comum.

Nível mais data ISO

^(?<nivel>INFO|WARN|ERROR)\s+(?<data>\d{4}-\d{2}-\d{2})

Grupos nomeados deixam o parser mais claro e aparecem separadamente no Raio-X.

Extrair requestId

\brequestId=(?<id>[A-Za-z0-9-]+)

Esse padrão funciona bem para procurar correlações entre linhas de log.

Não dependa de Regex para tudo

Se o log já é JSON estruturado, parsear JSON costuma ser melhor do que extrair campos com Regex. Use Regex para texto semi-estruturado, buscas ad hoc e filtros.

Como ler o padrão em partes

Em vez de memorizar a expressão inteira, leia cada bloco pela responsabilidade que ele cumpre:

(?INFO|WARN|ERROR)nomeia o nível e restringe valores conhecidos.
\S+captura uma sequência sem espaços; útil para IDs simples.
.*?quantificador não guloso pode ajudar, mas deve ser usado com delimitadores claros.
^ ... $evita interpretar pedaços arbitrários de uma linha como um registro completo.
QUANDO USAR

Onde Regex agrega valor aqui

Excelente para logs legados e extrações pontuais. Para novos sistemas, logs estruturados costumam ser mais confiáveis para máquinas.

ARMADILHAS

Erros comuns

  • Usar .* para tudo e perder a estrutura do log.
  • Criar parser de Regex para JSON quando um parser JSON já resolve melhor.
  • Não considerar multiline quando stack traces fazem parte da entrada.
  • Alterar o formato do log sem atualizar testes dos padrões.

Teste e pratique

Use o Playground para experimentar o padrão com seus próprios dados e depois leve o conceito para as fases do jogo, onde os casos positivos e negativos são avaliados automaticamente.

Praticar no jogoAbrir Playground

Continue aprendendo

← Voltar ao hub de Regex