samedi 11 août 2012

Du JSON pour les manipuler tous...

"Mais de quoi tu parles?" me demanderez vous?

Des logs...

Les logs ont toujours eu une grande importance pour nos applications. Une application qui n'informe pas correctement l'utilisateur n'est pas exploitable. Cela est d'autant plus vrai qu'avec des architectures de plus en plus complexes passer 30 minutes à comprendre un problème parce qu'une ligne de log est mal fichue n'est pas acceptable...

Mais JSON est là pour nous aider...

Voici à quoi ressemble une ligne de logs aujourd'hui:

Aug 11, 2012 10:43:47 AM INFO myapp.business.SimpleLogger doSomething with "arg1 value STR"... 
Aug 11, 2012 10:43:47 AM WARN myapp.business.SimpleLogger this is a warning
Quand on est un pro du perl, du python ou autre, on arrive sans trop de problèmes à extraire des info de ce type de log. Mais bien souvent, le format change d'une application à l'autre et il faut presque autant de scripts de traitement que d'applications...


C'est là de le format JSON intervient :
  1. toutes les données sont structurées de la même manière (clé - valeur).
  2. c'est moins lourd que du XML :)
  3. il existe des outils pour manipuler ce format dans tous les langages (ou presque)
  4. il est plus simple d'exploiter du JSON que du "full text"
Voici ce que peut donner les deux lignes de logs précédentes en JSON :
{"date" : "Aug 11, 2012 10:43:47 AM", "level" : "INFO", "origin" : "myapp.business.SimpleLogger", "args" : { "arg1 Value STR", {..arg2 as obj..}} , "message" : "doSomething"}
{"date" : "Aug 11, 2012 10:43:45 AM", "level" : "WARN", "origin" : "myapp.business.SimpleLogger", "args" : { "arg1 Value STR", {..arg2 as obj..}} , "message" : "warning details"}
Je ne prétends pas que cet exemple contient toutes les informations nécessaires, mais je trouve qu'il est quand même plus simple d'identifier les informations dans ces logs (sous réserve de ne pas avoir de structure trop complexe...):
- quel élément a produit la ligne ? (clé : "origin")
- quels sont les arguments de cette méthode ? (clé : "args" )

A l'heure des systèmes fortement distribués, avoir une concentration des logs pour pouvoir en extraire des informations consolidées est une chose importante. La production de logs dans un format comme JSON est la première étape à franchir.

Les outils existent déjà à nous de nous en servir...



Aucun commentaire:

Enregistrer un commentaire