首页  >  文章  >  后端开发  >  如何在 Django 中实现全面的 SQL 查询日志记录?

如何在 Django 中实现全面的 SQL 查询日志记录?

Barbara Streisand
Barbara Streisand原创
2024-10-17 17:25:02478浏览

How to Implement Comprehensive SQL Query Logging in Django?

Django 中的全面 SQL 查询日志记录

捕获 Django 应用程序执行的所有 SQL 查询对于调试、性能分析和安全审核至关重要。这是实现此目的的综合指南:

修改您的 settings.py 文件并将以下代码段合并到 LOGGING 字段中:

<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>

此配置路由所有 Django 数据库后端消息(SQL 查询) ) 到控制台处理程序。默认情况下,只有在启用 DEBUG 模式时才可见。

要捕获名为 all-sql.log 的文件中的所有 SQL 语句,您可以添加以下配置:

<code class="python">HANDLERS = {
    ...  # existing handlers

    'file': {
        'level': 'DEBUG',
        'class': 'logging.FileHandler',
        'filename': '/path/to/all-sql.log',  # adjust file path as needed
    }
}</code>

最后,将新的文件处理程序添加到记录器配置中:

<code class="python">LOGGERS = {
    ...  # existing loggers

    'django.db.backends': {
        'level': 'DEBUG',
        'handlers': ['console', 'file'],  # add 'file' handler
    }
}</code>

通过这些更改,所有 SQL 查询都将记录到控制台(启用 DEBUG 时)和指定文件。调整文件名参数中的文件路径以满足您的需要。重新启动 Django 应用程序以启用日志记录功能。

以上是如何在 Django 中实现全面的 SQL 查询日志记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn