Analisador de logs

Cole logs brutos — JSON, logfmt, acesso web, syslog ou texto simples — e obtenha timestamps, níveis, exceções e campos-chave sem escrever um padrão.

Como usar

  1. Cole um trecho de log ou abra um arquivo .log / .txt local. A análise começa imediatamente — não há botão Executar — e cada linha é verificada como JSON, logfmt, acesso web, syslog e texto iniciado por timestamp/nível, nessa ordem.
  2. Leia primeiro o resumo: intervalo de tempo, contagens por nível, exceções, formatos detectados e as chaves de campo mais comuns. O resumo sempre cobre todos os eventos.
  3. Clique em um chip de nível ou digite na caixa de busca para reduzir a lista; os dois se combinam. Clique em qualquer linha para expandir a mensagem completa, todos os campos, o stack da exceção e a linha bruta; depois copie ou baixe os eventos filtrados como JSON.

Exemplo

Log bruto

2026-10-20T13:55:36.123Z INFO [gateway] requisição recebida path=/api/pedidos user_id=4821
{"@timestamp":"2026-10-20T13:55:37.004Z","level":"error","service":"pagamento","message":"Cobrança falhou","order_id":"A-1042","user_id":4821}
127.0.0.1 - ana [20/Oct/2026:13:55:38 +0000] "POST /api/pedidos HTTP/1.1" 502 187 "-" "curl/8.5.0"
2026-10-20 13:55:40,512 ERROR [servico-pedidos] Exceção não tratada
java.lang.IllegalStateException: timeout do gateway
    at com.acme.Pedido.enviar(Pedido.java:42)

Resumo analisado

Eventos: 4 · Linhas: 6
Intervalo de tempo: 2026-10-20T13:55:36.123Z → 2026-10-20T13:55:40.512 (fusos misturados)
Níveis: info 1 · error 3
Exceções: 1
Formatos: JSON 1 · Web 1 · Texto 2
Campos: path 2 · user_id 2 · bytes 1 · client 1 · method 1 · order_id 1 · protocol 1 · status 1

A linha JSON é um evento; a linha da classe Java e seu stack são linhas de continuação do evento ERROR acima delas. A linha de texto sem fuso é comparada como hora literal de relógio, por isso o intervalo é rotulado como fusos misturados. HTTP 502 conta como erro; o código de status permanece visível como o nível original.

Regras, limites e problemas conhecidos

  • A detecção é linha a linha e ordenada: JSON (um objeto por linha), logfmt (pelo menos dois pares key=value), logs de acesso comum ou combinado do Apache/Nginx, syslog RFC 5424/3164, e então texto cuja linha começa com um timestamp ou nível suportado. Qualquer outra coisa é mantida como evento simples — nenhuma linha é descartada.
  • Apenas timestamps inequívocos são normalizados: ISO 8601, datas com ano primeiro, horários de log de acesso do Apache e segundos ou milissegundos Unix. 03/04/2026, valores só com data e syslog sem ano mantêm o texto original e não têm horário normalizado.
  • Frações de segundo são truncadas para milissegundos, nunca arredondadas. Deslocamentos são preservados; horários sem deslocamento são comparados como horas literais de relógio e o resumo indica ingênuo ou misturado.
  • Os níveis vêm de um vocabulário fixo (inglês mais palavras em chinês e árabe), números pino/bunyan, PRI/severidade do syslog ou status HTTP (5xx erro, 4xx aviso, o resto info). Uma linha sem nível reconhecido é desconhecida, não info.
  • Linhas indentadas, frames de stack, Traceback, Exception in thread e linhas Caused by se ligam ao evento anterior; uma linha em branco encerra o stack. Isso é heurístico — um formato multilinha não suportado pode precisar de uma linha em branco entre registros.
  • Exceções são reconhecidas por nomes de classe terminados em Exception, Error ou Throwable. O Caused by mais profundo vence. Os frames não são analisados, as causas-raiz não são classificadas além disso, e nenhum serviço de IA é chamado.
  • A lista renderiza no máximo 200 eventos correspondentes. Contagens, resumo, cópia e download sempre cobrem todas as correspondências, e a lista avisa quando está truncada.
  • Limite rígido de entrada: 5.000.000 de caracteres. Acima de 500.000 caracteres a análise ainda funciona, com um atraso maior. Uma única linha com mais de 200.000 caracteres é mantida como texto simples.
  • Arrays JSON e JSON multilinha formatado não são suportados: apenas um objeto por linha. JSON inválido, comentários e vírgulas finais recaem para texto simples em vez de serem corrigidos.
  • Nada é enviado, armazenado ou colocado na URL. Os arquivos são lidos localmente com a File API do navegador, e copiar/baixar só acontece quando você clica no botão.

Quando o log está estruturado, estes são os próximos passos habituais.