Traces (log) dans les applications

On m’a récemment demandé d’expliquer quelles étaient les bonnes pratiques en terme de trace dans les applications. Voilà rapidement mon opinion sur le sujet.

Tracer, pour quoi faire?

Les traces servent à raconter ce qui se passe dans la partie cachée d’un programme informatique. Cette partie cachée étant tout ce qui n’est pas visible par l’utilisateur final. En fonction de leur niveau (ERROR, WARNING, INFO, DEBUG), elles ne s’adressent pas à la même personne, mais elles sont indispensables pour:

  • surveiller simplement l’activité de l’application. Sans parler des capacités des outils de trace moderne comme log4j, un simple tail sur un fichier de log permet de surveiller simplement l’activité d’un programme.
  • savoir ou, quand et surtout dans quel contexte une erreur est apparue
  • permettre au développeur d’analyser un problème sans qu’il soit nécessaire de le reproduire sur son poste

Ce dernier point est particulièrement important, et l’ensemble des bonnes pratiques à mettre en place visent à améliorer cette capacité d’analyse.

Lire la suite

Top 50 Programming Quotes of All Time

Via le blog de Norman Walsh (Docbook), je suis tombé sur ce post des 50 meilleures citations sur la programmation. De quoi passer un bon moment 🙂 Voilà mes préférées (les traductions sont de moi, et sont donc pour le moins approximatives):

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. (La correction d’erreur est deux fois plus difficile que d’écrire la première version du code. Par conséquent, si vous écrivez du code aussi intelligemment que possible, vous serez, par définition, pas assez malin pour corriger les erreurs)

Unix is user-friendly. It’s just very selective about who its friends are. (Heu… Unix est utilisable. Il est juste très sélectif parmi les utilisateurs)

Et une spéciale dédicace pour Raph:

Walking on water and developing software from a specification are easy if both are frozen. (Marcher sur l’eau comme développer à partir de spécifications est facile si les deux sont gelées)