首页 >数据库 >mysql教程 >如何记录所有 Django SQL 查询(包括管理查询)以进行调试和监控?

如何记录所有 Django SQL 查询(包括管理查询)以进行调试和监控?

Linda Hamilton
Linda Hamilton原创
2025-01-15 21:14:52132浏览

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中文网其他相关文章!

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