Ordinare e confrontare i livelli di log per gravità
I livelli di log sono facili da riconoscere, ma è sorprendentemente semplice ordinarli male quando il codice di configurazione, filtro o avviso viene composto dinamicamente.
Esegui gratis nel browser
Questa capacità applica la progressione convenzionale da trace a fatal, ordina l’elenco fornito da Lei e confronta due livelli nella stessa richiesta. Restituisce nomi normalizzati in minuscolo, l’ordine di riferimento completo e una relazione esplicita adatta a script, test, dashboard e strumenti di documentazione. I nomi sconosciuti generano un errore chiaro, senza essere indovinati né collocati silenziosamente a un’estremità del risultato.
Adotti un’unica scala convenzionale di gravità
La capacità usa l’ordine crescente ampiamente riconosciuto trace, debug, info, warn, error, fatal. Trace rappresenta gli eventi diagnostici più dettagliati, mentre fatal indica guasti tanto gravi da arrestare un processo o renderlo inutilizzabile. Inserisca i livelli rilevati nell’array <code>levels</code>. Il risultato include <code>sorted_levels</code>, dal meno al più grave, e <code>severity_order</code> come riferimento completo. I valori ripetuti vengono conservati perché possono rappresentare voci reali di una configurazione, un campione o un rapporto. L’ordinamento è stabile per valori uguali. Gli spazi esterni vengono rimossi, il confronto non distingue maiuscole e i nomi tornano in minuscolo canonico. Il vocabolario è volutamente ristretto: notice, verbose, warning, critical o emergency sono rifiutati. Questi nomi appartengono ad altre convenzioni e non possono essere inseriti nella scala senza una scelta politica da parte Sua. Il rifiuto esplicito rende visibili gli errori prima che compromettano i filtri o la gestione degli incidenti.
Legga il risultato del confronto
Fornisca <code>first</code> e <code>second</code> per confrontare due livelli insieme all’ordinamento. La risposta normalizza entrambi gli operandi e riporta una <code>relation</code> dalla prospettiva del primo. <code>more_severe</code> significa che il primo appare più avanti nell’ordine standard; <code>less_severe</code> che appare prima; <code>equal</code> che entrambi indicano lo stesso livello. Il valore con segno <code>rank_difference</code> offre la distanza precisa: un numero positivo favorisce il primo, uno negativo il secondo e zero rappresenta l’uguaglianza. Se gli operandi differiscono, <code>more_severe</code> indica direttamente il vincitore, evitando al client un secondo confronto. Se sono uguali, il campo viene omesso invece di assumere null. Il formato è adatto ad asserzioni e automazioni condizionali. Per esempio, warn confrontato con error produce una differenza negativa e identifica error come più grave. ERROR confrontato con error diventa uguale dopo la normalizzazione, rendendo innocue le differenze di maiuscole senza indebolire la convalida del vocabolario.
Applichi la classificazione in sicurezza nello sviluppo
La classificazione della gravità è utile quando una configurazione testuale deve diventare una decisione inequivocabile. Un visualizzatore di log può ordinare i filtri prima di mostrarli. Un controllo di distribuzione può verificare che la soglia di produzione sia almeno warn. Un generatore di documentazione può presentare i livelli coerentemente anche se il file sorgente li elenca senza ordine. I test di monitoraggio possono confrontare la soglia configurata con il minimo richiesto e bloccare una versione prima della produzione. La funzione è deterministica e non effettua richieste di rete, quindi lo stesso input produce sempre lo stesso output nel browser e tramite API. Questo strumento classifica nomi: non analizza righe di log, non deduce il livello dal messaggio e non converte schemi incompatibili come syslog ed etichette personalizzate. Se il Suo sistema usa notice, critical, panic, off o numeri, li converta secondo la Sua politica documentata. Rifiutare gli input sconosciuti impedisce che un refuso nasconda eventi importanti senza alcun avviso.
Casi d'uso
Normalizzare una configurazione di log
Ordini i livelli selezionati secondo la convenzione e ottenga nomi coerenti in minuscolo.
Verificare una soglia di avviso
Confronti il livello configurato con il minimo richiesto e usi la relazione esplicita in un test di distribuzione.
Creare documentazione ordinata
Trasformi un elenco arbitrario di livelli supportati in una progressione prevedibile per le pagine di riferimento.
Domande frequenti
Qual è l’ordine di gravità?
Dal meno al più grave: trace, debug, info, warn, error e fatal.
Sono accettati i nomi in maiuscolo?
Sì. Gli spazi esterni vengono rimossi, il confronto ignora le maiuscole e il risultato usa il minuscolo canonico.
Che cosa accade ai livelli duplicati?
I duplicati vengono conservati. Le voci uguali mantengono il proprio ordine relativo originale.
Posso usare warning o critical?
No. Sono accettati solo trace, debug, info, warn, error e fatal; altre convenzioni richiedono una corrispondenza esplicita definita da Lei.
Come si interpreta rank_difference?
È il rango del primo livello meno quello del secondo. Un valore positivo favorisce il primo, uno negativo il secondo e zero indica uguaglianza.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. La stessa capacità deterministica può anche essere eseguita gratuitamente nel browser.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"levels": [
"error",
"debug",
"fatal",
"info"
],
"first": "warn",
"second": "error"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.log_level_severity_rank",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_items | 1000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |