首页 > 数据库 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板