Analyseur de journaux
Collez des journaux bruts — JSON, logfmt, accès web, syslog ou texte brut — et obtenez horodatages, niveaux, exceptions et champs clés sans écrire de motif.
Plage temporelle
2026-10-20T13:55:36.123Z INFO [gateway] requête reçue path=/api/orders user_id=4821
{"@timestamp":"2026-10-20T13:55:37.004Z","level":"error","service":"payment","message":"Paiement échoué","order_id":"A-1042","user_id":4821}
127.0.0.1 - alice [20/Oct/2026:13:55:38 +0000] "POST /api/orders HTTP/1.1" 502 187 "-" "curl/8.5.0"
2026-10-20 13:55:40,512 ERROR [order-service] Exception non gérée lors de la soumission de la commande
java.lang.IllegalStateException: gateway timeout
at com.acme.Order.submit(Order.java:42)
Caused by: java.net.SocketTimeoutException: Read timed out
at com.acme.Gateway.call(Gateway.java:77)
2026-10-20T13:55:41.900Z WARN [gateway] nouvelle tentative planifiée attempt=2 order_id=A-1042Mode d’emploi
- Collez un extrait de journal ou ouvrez un fichier .log / .txt local. L’analyse commence immédiatement — aucun bouton Exécuter — et chaque ligne est testée comme JSON, logfmt, accès web, syslog puis texte commençant par un horodatage ou un niveau, dans cet ordre.
- Lisez d’abord le résumé : plage temporelle, comptage par niveau, exceptions, formats détectés et clés de champs les plus courantes. Le résumé couvre toujours tous les événements.
- Cliquez sur une puce de niveau ou saisissez du texte dans la recherche pour réduire la liste ; les deux se combinent. Cliquez sur une ligne pour développer le message complet, tous les champs, la pile d’exception et la ligne brute, puis copiez ou téléchargez les événements filtrés en JSON.
Exemple
Journal brut
2026-10-20T13:55:36.123Z INFO [gateway] requête reçue path=/api/orders user_id=4821
{"@timestamp":"2026-10-20T13:55:37.004Z","level":"error","service":"payment","message":"Paiement échoué","order_id":"A-1042","user_id":4821}
127.0.0.1 - alice [20/Oct/2026:13:55:38 +0000] "POST /api/orders HTTP/1.1" 502 187 "-" "curl/8.5.0"
2026-10-20 13:55:40,512 ERROR [order-service] Exception non gérée
java.lang.IllegalStateException: gateway timeout
at com.acme.Order.submit(Order.java:42)Résumé analysé
Événements : 4 · Lignes : 6 Plage temporelle : 2026-10-20T13:55:36.123Z → 2026-10-20T13:55:40.512 (fuseaux mixtes) Niveaux : info 1 · error 3 Exceptions : 1 Formats : JSON 1 · Web 1 · Texte 2 Champs : path 2 · user_id 2 · bytes 1 · client 1 · method 1 · order_id 1 · protocol 1 · status 1
La ligne JSON est un événement ; la ligne de classe Java et sa pile sont des lignes de continuation de l’événement ERROR ci-dessus. La ligne de texte sans fuseau est comparée comme heure d’horloge littérale, d’où la mention fuseaux mixtes. HTTP 502 compte comme erreur ; le code de statut reste visible comme niveau d’origine.
Règles, limites et problèmes connus
- La détection se fait ligne par ligne et dans l’ordre : JSON (un objet par ligne), logfmt (au moins deux paires clé=valeur), journaux d’accès Apache/Nginx common ou combined, syslog RFC 5424/3164, puis texte dont la ligne commence par un horodatage ou un niveau pris en charge. Tout le reste est conservé comme événement brut — aucune ligne n’est perdue.
- Seuls les horodatages non ambigus sont normalisés : ISO 8601, dates commençant par l’année, heures des journaux d’accès Apache et secondes ou millisecondes Unix. 03/04/2026, les valeurs de date seule et les syslog sans année conservent leur texte d’origine et n’ont pas d’heure normalisée.
- Les fractions de seconde sont tronquées à la milliseconde, jamais arrondies. Les décalages sont préservés ; les heures sans décalage sont comparées comme heures d’horloge littérales et le résumé indique naïves ou mixtes.
- Les niveaux proviennent d’un vocabulaire fixe (mots anglais, chinois et arabes), des nombres pino/bunyan, de la PRI/sévérité syslog ou du statut HTTP (5xx erreur, 4xx avertissement, tout le reste info). Une ligne sans niveau reconnu est inconnue, et non info.
- Les lignes indentées, les cadres de pile, Traceback, Exception in thread et les lignes Caused by sont rattachés à l’événement précédent ; une ligne vide termine la pile. C’est une heuristique — un format multiligne non pris en charge peut nécessiter une ligne vide entre les enregistrements.
- Les exceptions sont reconnues à partir des noms de classe se terminant par Exception, Error ou Throwable. Le Caused by le plus profond l’emporte. Les cadres ne sont pas analysés, les causes racines ne sont pas classées au-delà, et aucun service d’IA n’est appelé.
- La liste affiche au plus 200 événements correspondants. Les compteurs, le résumé, la copie et le téléchargement couvrent toujours toutes les correspondances, et la liste indique lorsqu’elle est tronquée.
- Limite d’entrée stricte : 5 000 000 de caractères. Au-delà de 500 000 caractères, l’analyse fonctionne encore, avec un délai plus long. Une ligne unique de plus de 200 000 caractères est conservée en texte brut.
- Les tableaux JSON et le JSON multiligne formaté ne sont pas pris en charge : un seul objet par ligne. Un JSON invalide, les commentaires et les virgules finales basculent en texte brut plutôt que d’être réparés.
- Rien n’est envoyé, stocké ni inscrit dans l’URL. Les fichiers sont lus localement avec la File API du navigateur, et la copie/téléchargement ne se produisent que lorsque vous cliquez sur le bouton.
Outils associés
Une fois le journal structuré, voici les étapes suivantes habituelles.