Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich alle SQL-Abfragen in Django protokollieren?

Wie kann ich alle SQL-Abfragen in Django protokollieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-17 17:27:03469Durchsuche

How Can I Log All SQL Queries in Django?

SQL-Abfragen in Django protokollieren

Diese Frage sucht nach einer Methode zum Aufzeichnen aller von einer Django-Anwendung ausgeführten SQL-Abfragen, einschließlich derjenigen, die von der stammen Admin-Site. Die Aufgabe besteht darin, eine zentrale Protokolldatei (z. B. all-sql.log) zu erstellen, um diese SQL-Anweisungen zu erfassen.

LOGGING konfigurieren:

Um dies zu erreichen, führen Sie eine Zusammenführung durch das folgende Snippet mit dem LOGGING-Feld in Ihrer Settings.py:

<code class="python">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>

Erklärung:

  • Setzen Sie „Level“: „DEBUG“, um alles zu erfassen SQL-Abfragen, unabhängig von ihrem Schweregrad.
  • Verwenden Sie „Handler“: [‘console‘], um SQL-Abfragen an die Konsolenausgabe umzuleiten.
  • Konfigurieren Sie „Logger“: {'django.db. backends': {'level': 'DEBUG'}} zum Protokollieren aller über den Django ORM ausgeführten SQL-Abfragen.

Hinweis:

Diese Lösung entstand aus der Antwort von @acardenas89. Es stellt sicher, dass alle von Django ausgeführten SQL-Abfragen in die Konsole geschrieben werden, wenn sich die Anwendung im Debug-Modus befindet.

Das obige ist der detaillierte Inhalt vonWie kann ich alle SQL-Abfragen in Django protokollieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn