EDIT: 添加了另一个选项...
您所描述的代码正是如此https://pypi.org/project/django-sql-stacktrace/ https://pypi.org/project/django-sql-stacktrace/应该为你做。只需 pip 安装它并将其添加到您的应用程序中即可。这些设置很简单,但为了完整性:
INSTALLED_APPS = (
'sqlstacktrace',
)
SQL_STACKTRACE = True
就是这样!然而,该项目看起来有点不受欢迎,所以您可能想要一个更受欢迎且最近维护的项目......
另一个开箱即用的选项是https://github.com/dobarkod/django-queryinspect https://github.com/dobarkod/django-queryinspect。这不允许您直接访问 SQL 服务器日志,但应在 Web 服务器日志中提供必要的信息。
这里需要相当多的配置,但我尝试总结如下系统记录重复请求和耗时超过 100 毫秒的请求:
MIDDLEWARE_CLASSES += (
'qinspect.middleware.QueryInspectMiddleware',
)
DEBUG = True
LOGGING = {
...
'handlers': {
...
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
...
},
'loggers': {
...
'qinspect': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
},
},
...
}
QUERY_INSPECT_ENABLED = True
QUERY_INSPECT_LOG_QUERIES = True
QUERY_INSPECT_LOG_TRACEBACKS = True
QUERY_INSPECT_ABSOLUTE_LIMIT = 100 # in milliseconds
我应该警告一下,我自己还没有使用过,但下次我在自己的项目中遇到此类问题时,它们将是首选。