Protokollieren Sie alle SQL-Abfragen in Ihrer Django-App
In diesem Artikel erfahren Sie, wie Sie alle von Ihrer Django-Anwendung ausgeführten SQL-Abfragen, einschließlich Abfragen von der Admin-Site, effektiv protokollieren. Der Schlüssel besteht darin, das Feld settings.py
in der Datei LOGGING
zu ändern.
Umsetzungsschritte:
logging
-Bibliothek in Ihren Code. Auf diese Weise können Sie die Protokollierungsfunktion konfigurieren und verwalten. <code class="language-python">import logging</code>
<code class="language-python">class QueryHandler(logging.Handler): def emit(self, record): # 自定义处理SQL查询的逻辑 pass</code>
settings.py
in der Datei LOGGING
ein. Dadurch wird die Protokollierung von SQL-Abfragen und die direkte Ausgabe an den definierten Prozessor ermöglicht. <code class="language-python">LOGGING = { 'version': 1, 'filters': { 'require_debug_true': { '()': 'django.utils.log.RequireDebugTrue', } }, 'handlers': { 'console': { 'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', }, 'query_handler': { 'level': 'DEBUG', 'filters': [], 'class': 'path.to.QueryHandler', # 将path.to.QueryHandler替换为您的自定义处理器的路径 } }, 'loggers': { 'django.db.backends': { 'level': 'DEBUG', 'handlers': ['query_handler'], } } }</code>
<code class="language-python">logger = logging.getLogger('django.db.backends')</code>
<code class="language-python">logger.debug(sql_query)</code>
Indem Sie diese Schritte befolgen und die bereitgestellten Codeausschnitte in Ihre settings.py
-Datei integrieren, protokolliert Django alle SQL-Abfragen in der angegebenen Protokolldatei und bietet so einen umfassenden Überblick über alle Datenbankinteraktionen. Denken Sie daran, 'path.to.QueryHandler'
durch den tatsächlichen Pfad zu Ihrem benutzerdefinierten Prozessor zu ersetzen. Wenn Sie keinen benutzerdefinierten Prozessor benötigen, können Sie den 'query_handler'
-Teil entfernen und nur den 'console'
-Prozessor behalten.
Das obige ist der detaillierte Inhalt vonWie kann ich alle SQL-Abfragen in meiner Django-Anwendung protokollieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!