攔截並記錄所有 Django SQL 查詢
問題:
記錄 Django 應用程式執行的所有 SQL 查詢對於偵錯、效能分析和安全監控非常有價值。如何才能實現這一點,包括 Django 管理介面產生的每個 SQL 語句?
解:
要記錄所有 SQL 查詢,請使用下列指令增強 settings.py 中的 LOGGING 設定:
<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>
說明:
此配置新增了一個名為「console」的新處理程序,該處理程序將日誌訊息列印到控制台,但僅在啟用 DEBUG 模式時才列印。 「django.db.backends」記錄器配置為將所有 SQL 查詢以 DEBUG 層級記錄到此處理程序。
用法:
要將所有 SQL 查詢寫入檔案而不是控制台,請修改「handlers」部分如下:
<code>'handlers': { 'file': { 'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.FileHandler', 'filename': '/path/to/all-sql.log', } }</code>
這會將所有偵錯日誌(包括 SQL 查詢)重定向到指定的檔案。
以上是如何記錄所有 Django SQL 查詢(包括管理查詢)以進行偵錯和監控?的詳細內容。更多資訊請關注PHP中文網其他相關文章!