logging所有的SQL查询
我如何logging我的django应用程序执行的所有SQL查询?
我想logging所有内容,包括pipe理站点的SQL。 我看到这个问题和常见问题的答案,但我仍然无法弄清楚我应该放哪里
from django.db import connection connection.queries
logging一切到一个文件?
所以我的问题是 – 我应该怎么做一个文件(比如all-sql.log)在哪里logging所有SQL语句?
也许看看https://github.com/django-debug-toolbar/django-debug-toolbar
它会让你看到给定页面生成的所有查询。 以及它们发生的地方的栈跟踪等。
编辑:要logging所有的SQL查询文件等,那么你会想创build一些中间件。 中间件可以在每个请求上运行。 这里有几个Django片段:
那些关心打印到terminal,但它不适合使用python的日志库。
将下面的代码片段与settings.py
的LOGGING
字段合并:
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'], } } }
调整从@ acardenas89答案
在settings.py中添加以下粗体语句
如果DEBUG: 导入日志 l = logging.getLogger('django.db.backends') l.setLevel(logging.DEBUG) l.addHandler(logging.StreamHandler()) LOGGING = { '版本':1, 'disable_existing_loggers':假, 'filters':{ 'require_debug_false':{ '()':'django.utils.log.RequireDebugFalse' } }, 'handlers':{ 'mail_admins':{ '级别':'错误', 'filters':['require_debug_false'], 'class':'django.utils.log.AdminEmailHandler' }, 'console':{ '级别':'DEBUG', 'class':'logging.StreamHandler', } , }, 'logging器':{ 'django.request':{ 'handlers':['mail_admins'], '级别':'错误', “传播”:没错, }, 'django.db.backends.sqlite3':{ '级别':'DEBUG', 'handlers':['console'], } , } }
资源/信用
Django 1.3将所有SQL语句logging到django.db.backendslogging器中:
https://docs.djangoproject.com/en/dev/topics/logging/#django-db-backends
你需要把它放在一个中间件包中。 中间件位于webserver / django核心和所有视图之间。 它可以在请求前进行预处理,在请求完成后进行后处理。 例如,将查询保存到一个文件。