【发布时间】:2013-07-04 11:28:23
【问题描述】:
当 DEBUG=True 和 DEBUG=False 时,是否有可能看到原始 sql?对于方法 delete() 和 save() 呢? 我想记录我的应用程序的所有请求,但我不明白如何记录原始 sql。
【问题讨论】:
当 DEBUG=True 和 DEBUG=False 时,是否有可能看到原始 sql?对于方法 delete() 和 save() 呢? 我想记录我的应用程序的所有请求,但我不明白如何记录原始 sql。
【问题讨论】:
请务必阅读docs on logging。
您需要django.db.backends logger 和RequireDebugFalse filter。
示例设置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'console':{
'level':'DEBUG',
'filters': ['require_debug_false'],
'class':'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers':['console'],
'propagate': True,
'level':'DEBUG',
},
}
}
注意:您也可以在 SQL 服务器配置中启用 SQL 查询日志记录,而无需接触 django。有关详细信息,请参阅您的 SQL Server 文档。
【讨论】:
import logging; l= logging.getLogger('django.db.backends'); l.setLevel(logging.DEBUG); l.addHandler(logging.StreamHandler()) 添加到views.py,我可以在控制台中看到日志消息,但我不明白如何查看一个 sql...
Debug=False 不起作用,Debug=True - 起作用。看起来 DEBUG=False 它不能工作:For performance reasons, SQL logging is only enabled when settings.DEBUG is set to True, regardless of the logging level or handlers that are installed.