首頁 > 資料庫 > mysql教程 > 如何記錄所有 Django SQL 查詢(包括管理查詢)以進行偵錯和監控?

如何記錄所有 Django SQL 查詢(包括管理查詢)以進行偵錯和監控?

Linda Hamilton
發布: 2025-01-15 21:14:52
原創
129 人瀏覽過

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

攔截並記錄所有 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板