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 voslocal_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
. LorsqueDEBUG
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 :¶
Activer la journalisation de toutes les instructions SQL. Visitez quelques pages et affichez la sortie d’enregistrement.
À 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.