Maison >base de données >tutoriel mysql >Comment puis-je enregistrer toutes les requêtes SQL Django, y compris les requêtes d'administrateur, pour le débogage et la surveillance ?

Comment puis-je enregistrer toutes les requêtes SQL Django, y compris les requêtes d'administrateur, pour le débogage et la surveillance ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-15 21:14:52132parcourir

How Can I Log All Django SQL Queries, Including Admin Queries, for Debugging and Monitoring?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn