Débogage des composants Python de GeoNode

Journalisation

Références :

L’ enregistrement est contrôlé par le contenu de l’enregistrement des données de structure défini dans le settings.py. Les paramètres par défaut distribués avec GeoNode sont configurés pour n’enregistrer que des erreurs. Au cours du développement, c’est une bonne idée de remplacer la structure de données de journalisation avec quelque chose d’un peu plus bavard.

Sortie

En production, la sortie du logging ira dans le log d’erreur apache. Celui-ci se trouve dans /var/log/apache2/error.log. Au cours du développement,les sorties d’enregistrement iront, par défaut, à l’écart-type.

Configuration

  • Assurez-vous que le gestionnaire de “console” est au niveau approprié. Il ignorera les messages du journal sous le niveau de jeu.

  • Vérifiez que le journal spécifique que vous souhaitez utiliser soit défini au niveau correct.

  • Si vous prévoyez de vous connecter à SQL, faire en sorte DEBUG=True dans vos local_settings.py.

Débogage SQL

  • Pour Vectoriser tous SQL dans django, configurer l’enregistreur de la django.db.backends à DEBUG

  • Pour examiner un objet de requête spécifique, vous pouvez utiliser le champ query: str(Layer.objects.all().query)

  • Vous pouvez collecter plus d’informations à l’aide de django.db.connection.queries. Lorsque DEBUG est activée, requête SQL et la synchronisation des informations sont stockées dans cette liste.

Astuces

  • N’utilisez pas des instructions print. Elles sont faciles à utiliser en mode de développement, mais causeront un échec dans la production .

  • Profitez de python. Au lieu de:

    logging.info('some var ' + x + ' is not = ' + y)
    

    Usage:

    logging.info('some var %s is not = %s', x, y)
    

Exercices :

  1. Activer la journalisation de toutes les instructions SQL. Visitez quelques pages et affichez la sortie d’enregistrement.

  2. À l’aide de l’interpréteur de commandes python, utilisez l’objet de questions pour démontrer les résultats des requêtes spécifiques.

PDB

Référence :

Pour le plus aventureux, pdb permet une session de débogage interactive. Cela n’est possible que lors de l’exécution dans un shell via manage.py runserver ou paver runserver.

Pour définir un point d’arrêt, insérez le code suivant avant le code de débogage.

import pdb; pdb.set_strace()

Lorsque l’exécution atteint cette instruction, le débogueur s’activera. Les commandes sont indiquées dans le lien ci-dessus. En plus de ces commandes de débogueur spécifique, des déclarations générales python sont pris en charge. Par exemple, taper le nom d’une variable dans la portée donnera la valeur via la chaîne contrainte. “n” exécutera la ligne suivante, “c” continuera l’exécution du programme, “q” va renoncer.