Ordenar níveis de log por severidade e comparar
Níveis de log são fáceis de reconhecer, mas podem ser ordenados incorretamente quando códigos de configuração, filtragem ou alertas são montados dinamicamente.
Executar grátis
Esta capacidade aplica a progressão convencional de trace até fatal, ordena a lista fornecida por você e compara dois níveis na mesma solicitação. Ela retorna nomes normalizados em letras minúsculas, a ordem completa de referência e uma relação explícita adequada para scripts, testes, painéis e ferramentas de documentação. Nomes desconhecidos geram um erro claro, sem suposições nem posicionamento silencioso em uma extremidade do resultado.
Use uma única escala convencional de severidade
A capacidade usa a ordem crescente amplamente reconhecida trace, debug, info, warn, error, fatal. Trace representa os eventos de diagnóstico mais detalhados, enquanto fatal representa falhas graves o bastante para interromper um processo ou torná-lo inutilizável. Envie os níveis encontrados no array <code>levels</code>. O resultado inclui <code>sorted_levels</code>, do menos ao mais grave, e <code>severity_order</code> como referência completa. Valores repetidos são preservados porque podem representar entradas reais em uma configuração, amostra ou relatório. A ordenação é estável para valores iguais. Os nomes têm espaços externos removidos, são comparados sem diferenciar maiúsculas e retornam em minúsculas canônicas. O vocabulário aceito é propositalmente restrito: valores como notice, verbose, warning, critical ou emergency são rejeitados. Esses nomes pertencem a outras convenções e não podem ser mapeados nesta escala sem uma decisão de política feita por você. A rejeição explícita revela erros de configuração antes que afetem a filtragem ou a resposta a incidentes.
Entenda o resultado da comparação
Informe <code>first</code> e <code>second</code> para comparar dois níveis junto com a ordenação. A resposta normaliza os operandos e apresenta uma <code>relation</code> da perspectiva do primeiro. <code>more_severe</code> significa que o primeiro aparece depois na ordem padrão; <code>less_severe</code>, que aparece antes; e <code>equal</code>, que ambos correspondem ao mesmo nível. O <code>rank_difference</code> com sinal fornece a distância exata: um número positivo favorece o primeiro operando, um número negativo favorece o segundo e zero representa igualdade. Quando são diferentes, <code>more_severe</code> indica diretamente o vencedor e evita que o cliente repita a comparação. Em caso de igualdade, o campo é omitido em vez de receber null. Esse formato funciona bem em asserções e automações condicionais. Comparar warn com error produz uma diferença negativa e identifica error como mais grave. Comparar ERROR com error produz igualdade após a normalização, eliminando diferenças de caixa sem enfraquecer a validação do vocabulário verdadeiro.
Aplique a classificação com segurança no desenvolvimento
Classificar severidade é útil sempre que uma configuração textual precisa virar uma decisão inequívoca. Um visualizador de logs pode ordenar filtros selecionados antes de exibi-los. Um verificador de implantação pode confirmar que o limite de produção seja pelo menos warn. Um gerador de documentação pode apresentar níveis consistentemente mesmo que o arquivo de origem os liste fora de ordem. Testes de monitoramento podem comparar o limite configurado com um mínimo obrigatório e impedir uma versão antes da produção. A função é determinística e não faz solicitações de rede; portanto, a mesma entrada sempre produz a mesma saída no navegador e pela API. Esta ferramenta classifica nomes: ela não analisa linhas de log, não deduz níveis do conteúdo das mensagens e não converte esquemas incompatíveis como syslog e rótulos personalizados. Se o seu sistema usa notice, critical, panic, off ou níveis numéricos, converta-os conforme a política documentada por você. Rejeitar entradas desconhecidas impede que um erro de digitação esconda eventos importantes sem aviso.
Casos de uso
Normalizar uma configuração de log
Ordene os níveis selecionados de uma configuração pela convenção e retorne nomes consistentes em minúsculas.
Verificar um limite de alerta
Compare um nível configurado com o mínimo exigido e use a relação explícita em um teste de implantação.
Criar documentação ordenada
Transforme uma lista arbitrária de níveis compatíveis em uma progressão previsível para páginas de referência.
Perguntas frequentes
Qual é a ordem de severidade?
Da menor para a maior severidade: trace, debug, info, warn, error e fatal.
Nomes em maiúsculas são aceitos?
Sim. Espaços externos são removidos, a comparação ignora maiúsculas e o retorno usa minúsculas canônicas.
O que acontece com níveis duplicados?
As duplicatas são preservadas. Entradas iguais mantêm sua ordem relativa original.
Posso usar warning ou critical?
Não. São aceitos apenas trace, debug, info, warn, error e fatal; outras convenções exigem um mapeamento explícito definido por você.
Como interpretar rank_difference?
É a posição do primeiro nível menos a do segundo. Um valor positivo indica que o primeiro é mais grave, um negativo favorece o segundo e zero indica igualdade.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. A mesma capacidade determinística também pode ser executada gratuitamente no navegador.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/log-level-severity-rank \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"levels":["error","debug","fatal","info"],"first":"warn","second":"error"}'const res = await fetch("https://api.kit.forhosting.com/dev/log-level-severity-rank", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"levels": [
"error",
"debug",
"fatal",
"info"
],
"first": "warn",
"second": "error"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/log-level-severity-rank",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"levels": [
"error",
"debug",
"fatal",
"info"
],
"first": "warn",
"second": "error"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/log-level-severity-rank", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"levels":["error","debug","fatal","info"],"first":"warn","second":"error"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"levels":["error","debug","fatal","info"],"first":"warn","second":"error"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/log-level-severity-rank", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"levels": [
"error",
"debug",
"fatal",
"info"
],
"first": "warn",
"second": "error"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.log_level_severity_rank",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_items | 1000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |