Ordenar niveles de registro por severidad y compararlos
Los niveles de registro son fáciles de reconocer, pero resulta sorprendentemente sencillo ordenarlos mal cuando el código de configuración, filtrado o alertas se construye de forma dinámica.
Ejecutar — gratis
Esta capacidad aplica la progresión convencional de trace a fatal, ordena la lista que usted proporcione y compara dos niveles en la misma solicitud. Devuelve nombres normalizados en minúsculas, el orden de referencia completo y una relación explícita útil para scripts, pruebas, paneles y documentación. Los nombres desconocidos producen un error claro, sin conjeturas ni ubicaciones silenciosas en el resultado.
Utilice una única escala convencional de severidad
La capacidad utiliza el orden ascendente ampliamente reconocido trace, debug, info, warn, error, fatal. Trace representa los eventos de diagnóstico más detallados, mientras que fatal identifica fallos capaces de detener un proceso o dejarlo inutilizable. Envíe los niveles encontrados en el arreglo <code>levels</code>. El resultado incluye <code>sorted_levels</code>, desde el menos hasta el más grave, y <code>severity_order</code> como referencia completa. Los valores repetidos se conservan porque pueden corresponder a entradas reales de una configuración, muestra o informe. La ordenación es estable para valores iguales. Los nombres se recortan, se comparan sin distinguir mayúsculas y se devuelven en minúsculas canónicas. El vocabulario es deliberadamente limitado: notice, verbose, warning, critical o emergency se rechazan. Esos nombres pertenecen a otras convenciones y no pueden situarse en esta escala sin que usted defina una política. El rechazo explícito revela errores antes de que afecten al filtrado o a la respuesta ante incidentes.
Interprete el resultado de la comparación
Proporcione <code>first</code> y <code>second</code> para comparar dos niveles además de ordenar la lista. La respuesta normaliza ambos operandos e informa de una <code>relation</code> desde la perspectiva del primero. <code>more_severe</code> indica que el primer operando aparece después en el orden estándar; <code>less_severe</code>, que aparece antes; y <code>equal</code>, que ambos corresponden al mismo nivel. El valor con signo <code>rank_difference</code> expresa la distancia exacta: un número positivo favorece al primero, uno negativo al segundo y cero representa igualdad. Si son distintos, <code>more_severe</code> nombra directamente al ganador y evita repetir la comparación en el cliente. Si son iguales, ese campo se omite en lugar de devolver null. El formato funciona bien en aserciones y automatizaciones condicionales. Por ejemplo, comparar warn con error produce una diferencia negativa e identifica error como más grave. Comparar ERROR con error da igualdad tras normalizar, por lo que las diferencias de mayúsculas no debilitan la validación del vocabulario real.
Aplique la clasificación con seguridad en flujos de desarrollo
Clasificar la severidad resulta útil cuando una configuración textual debe convertirse en una decisión inequívoca. Un visor de registros puede ordenar filtros antes de mostrarlos. Un verificador de despliegue puede confirmar que el umbral de producción sea como mínimo warn. Un generador de documentación puede presentar niveles de manera coherente aunque el archivo de origen los enumere sin orden. Las pruebas de supervisión pueden comparar el umbral configurado con un mínimo requerido y detener una versión antes de producción. La función es determinista y no realiza solicitudes de red, por lo que una misma entrada siempre ofrece la misma salida en el navegador y mediante la API. Esta herramienta clasifica nombres: no analiza líneas de registro, no infiere niveles a partir del mensaje ni traduce entre esquemas incompatibles como syslog y etiquetas personalizadas. Si su sistema usa notice, critical, panic, off o números, conviértalos según su propia política documentada. Rechazar entradas desconocidas evita que una errata oculte accidentalmente eventos importantes.
Qué puede hacer con ella
Normalizar una configuración de registro
Ordene los niveles seleccionados según la convención y obtenga nombres coherentes en minúsculas.
Comprobar un umbral de alerta
Compare un nivel configurado con el mínimo exigido y use la relación explícita en una prueba de despliegue.
Crear documentación ordenada
Convierta una lista arbitraria de niveles compatibles en una progresión predecible para páginas de referencia.
Preguntas frecuentes
¿Cuál es el orden de severidad?
De menor a mayor severidad: trace, debug, info, warn, error y fatal.
¿Se aceptan nombres en mayúsculas?
Sí. Se eliminan espacios laterales, se comparan sin distinguir mayúsculas y se devuelven en minúsculas canónicas.
¿Qué ocurre con los niveles duplicados?
Los duplicados se conservan. Las entradas iguales mantienen su orden relativo original.
¿Puedo usar warning o critical?
No. Solo se aceptan trace, debug, info, warn, error y fatal; otras convenciones requieren que usted defina una correspondencia explícita.
¿Cómo se interpreta rank_difference?
Es el rango del primer nivel menos el del segundo. Un valor positivo indica que el primero es más grave, uno negativo favorece al segundo y cero indica igualdad.
¿Cuánto cuesta una solicitud de API?
Cada solicitud de API cuesta $0.002. La misma capacidad determinista también puede ejecutarse gratis en el navegador.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"levels": [
"error",
"debug",
"fatal",
"info"
],
"first": "warn",
"second": "error"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.log_level_severity_rank",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_items | 1000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |