Interception et journalisation de toutes les requêtes SQL Django
Question :
La journalisation de toutes les requêtes SQL exécutées par une application Django est précieuse pour le débogage, l'analyse des performances et la surveillance de la sécurité. Comment y parvenir, y compris chaque instruction SQL générée par l'interface d'administration de Django ?
Solution :
Pour enregistrer toutes les requêtes SQL, améliorez la configuration LOGGING dans settings.py avec la directive suivante :
<code>LOGGING = { 'version': 1, 'filters': { 'require_debug_true': { '()': 'django.utils.log.RequireDebugTrue', } }, 'handlers': { 'console': { 'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', } }, 'loggers': { 'django.db.backends': { 'level': 'DEBUG', 'handlers': ['console'], } } }</code>
Instructions :
Cette configuration ajoute un nouveau gestionnaire appelé "console" qui imprime les messages de journal sur la console, mais uniquement lorsque le mode DEBUG est activé. Le journaliseur 'django.db.backends' est configuré pour enregistrer toutes les requêtes SQL au niveau DEBUG dans ce gestionnaire.
Utilisation :
Pour écrire toutes les requêtes SQL dans un fichier au lieu de la console, modifiez la section "handlers" comme suit :
<code>'handlers': { 'file': { 'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.FileHandler', 'filename': '/path/to/all-sql.log', } }</code>
Cela redirigera tous les journaux de débogage (y compris les requêtes SQL) vers le fichier spécifié.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!