IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débats sur le développement - Le Best Of Discussion :

Quelle est l’importance de la journalisation dans le débogage ?


Sujet :

Débats sur le développement - Le Best Of

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Consultant en architecture
    Inscrit en
    Décembre 2013
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en architecture
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 82
    Billets dans le blog
    1
    Par défaut
    L'auteur marque un point : il est vrai qu'on a rapidement tendance a oublier la problématique des logs, tout simplement car cela sera surtout utile aux équipes de production (plus qu'aux devs), et que le client ne le verra absolument pas.

    En revanche, les logs ne servent pas qu'à investiguer en cas d'incident comme on peut le penser en lisant l'article, mais à une valeur aussi en fonctionnement normal. Outre l'intérêt fonctionnel déjà évoqué, même en fonctionnement normal les logs ont un intérêt technique pour les équipes de prod.

    Imaginons un système de batch, j'ai sûrement envie de savoir dans mes logs, le temps qu'à pris un gros batch, quelques infos sur les fichiers reçus (genre la taille et qui les envoie)... J'ai peut-être aussi envie d'utiliser mes logs si jamais un utilisateur externe essaie de faire n'importe quoi, même si il n'a rien cassé (sécurité). Je m'éloigne de mon domaine mais il semblerait que l'analyse de logs soit utilisés pour améliorer le référencement d'un site web.
    Bref, les logs font partie de l'application, et pas uniquement pour les erreurs ou le deboggage.

    En recherchant un peu les bonnes pratiques, je suis tombé sur cet article, que je vous conseille. Il ne dit pas quoi logger, mais comment créer de bons logs, je pense que c'est aussi utile.
    http://www.javacodegeeks.com/2011/01...n-logging.html

  2. #2
    Membre averti

    Profil pro
    Java/Jee
    Inscrit en
    Juillet 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Java/Jee

    Informations forums :
    Inscription : Juillet 2008
    Messages : 25
    Billets dans le blog
    1
    Par défaut
    C'est essentiel de journaliser les différents traitements du code pour pouvoir analyser ce qui se passe sur la plateforme de production.
    Voir le cheminement d'un traitement permet de comprendre ce qui se passe.

    Il faut bien sûr faire attention aux performances mais maintenant, il existe beaucoup de framework de journalisation qui limitent leur impact sur l'éxecution du code.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    ouais franchement :

    C'est essentiel de journaliser les différents traitements du code pour pouvoir analyser ce qui se passe sur la plateforme de production.
    Quand t'as une appli web avec plus de 100 utilisateurs simultanes, lire les logs va etre un veritable plaisir.

    Voir le cheminement d'un traitement permet de comprendre ce qui se passe.
    Sur une quinzaine de niveaux avec differents threads c'est lisible.

    Dès que t'utilises une API externe, logger les codes retours erronés est vraiment un minimum à faire.
    Cela ca t'avances a quoi de plus que verifier les entrees sorties et envoyer une exeption, de plus un api externe devrait toujours etre imbriquee dans un autre conteneur (cf clean code ou code complete pour plus de details et explications).

    C'est pour ca que le maximum de logs doivent être pensés en amont et être détaillé dans une spécification technique (ex: dossier de conception) ET fonctionnelle. Chaque type doit pouvoir être clairement distingué (ex: tables distinctes ou colonne de marquage) et il ne doit pas y avoir plus que marquer dans les spécifications.
    Libre ensuite de rajouter d'autres types ou d'autres sources pour stocker des traces complémentaires ajoutés par les dev (ex: fichiers de log)

    Rien n'empêche de faire redescendre les logs fonctionnels dans les logs techniques puis dans les traces pour avoir une source qui contient tous les "types".
    Du coup avec cela le taff du dev est triple: mettre des commentaires et les maintenir, mettre des logs avec du vrai texte et les maintenir/ et faire son taff(tester les entree sorties) et le maintenir. Au final les applis ressemblent a des soupes de commentaires + logs pour ne garder que peu de lignes utiles A force de parcourirdu code mal ecrit j'ai developpe une competence qui me permet de ne jamais 'voir' voir les commentaires/logs ecris dans un code car trop souvent pas maintenus ou juste faux.

    Comme je le dis aux autres developpeurs : Contrairements aux commentaires/logs le code ne ments pas.

    Le plus drole c'est lorsque le developpeur joue avec les niveau de log, ca devient ridicule :on logge l'entree en debug et la sortie en info et paf surprise on ne voit plus les logs de sorties.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 165
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par mermich Voir le message
    Cela ca t'avances a quoi de plus que verifier les entrees sorties et envoyer une exeption, de plus un api externe devrait toujours etre imbriquee dans un autre conteneur (cf clean code ou code complete pour plus de details et explications).
    Entre autre à savoir que le flow normal ne s'est pas déroulé à cause d'une erreur de leur côté et non du tien. Et ça n'a rien à voir avec la validité des entrées.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Quand je lis que lorsque on a fait un bon design alors le log des appels de méthode suffit je me marre.

    nos amis de la Business Machine nous on pondu un tel truc
    effectivement super facile de localiser l'endroit où se produit l'erreur.

    J'avais (oui on à fini par les mettre à la porte et à développer sérieusement) tous le cheminement des appels successif jusqu'à l'erreur.
    Je pouvais donc savoir où mais comme je n'avais que ça impossible de savoir pourquoi.

    supposant que nous ayons disons 5 classes avec chacun 4 méthodes. et que pour toutes ces méthode nous aillons été très rigoureux et traçons chaque appel.
    tout cela est plutôt simple. mais voilà le système instancie des milliers d'exemplaire de ces classes assure des centaines de traitement en parallèle le tout pour traiter des millions de données différentes.
    du coup dans les logs les appels simultanés à ces quelque classes se retrouve dispersés.

    et voila comment sur une simple exécution d'une requête on sait qu'on a à la ligne 35 de la méthode toto de la classe Titi une erreur SQL "Table or View dose not exist"
    Mais on ne sais pas qu'elle table parmi les quelques dizaines de milliers qui sont présente dans les quelques centaine de bases, pas plus q'on ne sait quelle requête ni pour quelle donnée. ne riez pas c'est IBM qui a produit ça.

    Alors on a envie de mettre des log bien plus précis et on se retrouve avec des fichier de log qui font plus d'une rotation par minute. et comment ils sont encore une fois inexploitable.

    bref si les log permettaient à eux seul de faire du debug ça se saurait depuis longtemps.

    A+JY

Discussions similaires

  1. Quelle est la place d’un développeur dans le monde de la robotique ?
    Par Stéphane le calme dans le forum Robotique
    Réponses: 7
    Dernier message: 13/08/2016, 02h07
  2. Réponses: 3
    Dernier message: 10/07/2012, 12h48
  3. Réponses: 20
    Dernier message: 06/07/2009, 14h46
  4. Réponses: 1
    Dernier message: 09/06/2006, 13h04
  5. Réponses: 1
    Dernier message: 07/05/2005, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo