Abfangen und Protokollieren aller Django SQL-Abfragen
Frage:
Die Protokollierung aller von einer Django-Anwendung ausgeführten SQL-Abfragen ist für Debugging, Leistungsanalyse und Sicherheitsüberwachung wertvoll. Wie kann dies erreicht werden, einschließlich aller von der Django-Administratorschnittstelle generierten SQL-Anweisungen?
Lösung:
Um alle SQL-Abfragen zu protokollieren, erweitern Sie die LOGGING-Konfiguration in Settings.py mit der folgenden Anweisung:
<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>
Anleitung:
Diese Konfiguration fügt einen neuen Handler namens „console“ hinzu, der Protokollmeldungen an die Konsole druckt, jedoch nur, wenn der DEBUG-Modus aktiviert ist. Der Logger „django.db.backends“ ist so konfiguriert, dass er alle SQL-Abfragen auf DEBUG-Ebene an diesen Handler protokolliert.
Verwendung:
Um alle SQL-Abfragen in eine Datei statt in die Konsole zu schreiben, ändern Sie den Abschnitt „Handler“ wie folgt:
<code>'handlers': { 'file': { 'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.FileHandler', 'filename': '/path/to/all-sql.log', } }</code>
Dadurch werden alle Debug-Protokolle (einschließlich SQL-Abfragen) in die angegebene Datei umgeleitet.
Das obige ist der detaillierte Inhalt vonWie kann ich alle Django SQL-Abfragen, einschließlich Admin-Abfragen, zum Debuggen und Überwachen protokollieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!