「Django 生成されるSQLをロギングする」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「==Django 生成されるSQLをロギングする== [Django] ===Django ロギング設定 に変更を加える=== *Django ロギング設定 に、DEBUG = True の…」) |
|||
| (同じ利用者による、間の2版が非表示) | |||
| 1行目: | 1行目: | ||
| − | ==Django 生成されるSQLをロギングする== | + | ==[[Django 生成されるSQLをロギングする]]== |
| − | [Django] | + | [[Django]] | |
| − | ===Django ロギング設定 に変更を加える=== | + | ===[[Django ロギング設定]] に変更を加える=== |
| − | *Django ロギング設定 に、DEBUG = True の時だけ、ログを出力するフィルターを作成 | + | *[[Django ロギング設定]] に、DEBUG = True の時だけ、ログを出力するフィルターを作成 |
*django用のロガーを作成 | *django用のロガーを作成 | ||
LOGGING = { | LOGGING = { | ||
| 18行目: | 18行目: | ||
'filters': { | 'filters': { | ||
'require_debug_false': { | 'require_debug_false': { | ||
| − | '()': 'django.utils.log. | + | '()': 'django.utils.log.[[R]]equireDebugFalse' |
}, | }, | ||
'require_debug_true': { | 'require_debug_true': { | ||
| − | '()': 'django.utils.log. | + | '()': 'django.utils.log.[[R]]equireDebugTrue' |
} | } | ||
}, | }, | ||
'handlers': { | 'handlers': { | ||
'mail_admins': { | 'mail_admins': { | ||
| − | 'level': ' | + | 'level': 'E[[R]][[R]]O[[R]]', |
'filters': ['require_debug_false'], | 'filters': ['require_debug_false'], | ||
'class': 'django.utils.log.AdminEmailHandler' | 'class': 'django.utils.log.AdminEmailHandler' | ||
| 39行目: | 39行目: | ||
'django.request': { | 'django.request': { | ||
'handlers': ['mail_admins'], | 'handlers': ['mail_admins'], | ||
| − | 'level': ' | + | 'level': 'E[[R]][[R]]O[[R]]', |
'propagate': True, | 'propagate': True, | ||
}, | }, | ||
| 55行目: | 55行目: | ||
====manage.py shell のときには、以下を実行すればロギングされる==== | ====manage.py shell のときには、以下を実行すればロギングされる==== | ||
*http://www.dabapps.com/blog/logging-sql-queries-django-13/ | *http://www.dabapps.com/blog/logging-sql-queries-django-13/ | ||
| − | + | >>> import logging | |
| − | + | >>> l = logging.getLogger('django.db.backends') | |
| − | + | >>> l.setLevel(logging.DEBUG) | |
| − | + | >>> l.addHandler(logging.StreamHandler()) | |
| − | + | >>> for b in Bookmark.objects.all(): | |
... print b.page.url | ... print b.page.url | ||
... | ... | ||
http://google.co.jp | http://google.co.jp | ||
http://yahoo.co.jp | http://yahoo.co.jp | ||
| − | (0.000) SELECT "Bookmark_bookmark"."id", "Bookmark_bookmark"."page_id", "Bookmark_bookmark"."user_id" | + | (0.000) SELECT "Bookmark_bookmark"."id", "Bookmark_bookmark"."page_id", "Bookmark_bookmark"."user_id" F[[R]]OM "Bookmark_bookmark"; args=() |
| − | (0.000) SELECT "Bookmark_page"."id", "Bookmark_page"."url" | + | (0.000) SELECT "Bookmark_page"."id", "Bookmark_page"."url" F[[R]]OM "Bookmark_page" WHE[[R]]E "Bookmark_page"."id" = 1 ; args=(1,) |
| − | (0.004) SELECT "Bookmark_page"."id", "Bookmark_page"."url" | + | (0.004) SELECT "Bookmark_page"."id", "Bookmark_page"."url" F[[R]]OM "Bookmark_page" WHE[[R]]E "Bookmark_page"."id" = 2 ; args=(2,) |
| − | === | + | ===[[Django]]のテストでSQLをロギングする=== |
*セットアップでロガーを有効にする | *セットアップでロガーを有効にする | ||
from django.conf import settings | from django.conf import settings | ||
2020年2月16日 (日) 04:24時点における最新版
目次
Django 生成されるSQLをロギングする
Django |
Django ロギング設定 に変更を加える
- Django ロギング設定 に、DEBUG = True の時だけ、ログを出力するフィルターを作成
- django用のロガーを作成
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
'formatter': 'verbose'
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
'django':{
'handlers': ['console', 'mail_admins'],
'level': 'DEBUG',
'filters' : ['require_debug_true'],
},
'myapp':{
'handlers': ['console', 'mail_admins'],
'level': 'DEBUG',
},
}
manage.py shell のときには、以下を実行すればロギングされる
>>> import logging
>>> l = logging.getLogger('django.db.backends')
>>> l.setLevel(logging.DEBUG)
>>> l.addHandler(logging.StreamHandler())
>>> for b in Bookmark.objects.all():
... print b.page.url
...
http://google.co.jp
http://yahoo.co.jp
(0.000) SELECT "Bookmark_bookmark"."id", "Bookmark_bookmark"."page_id", "Bookmark_bookmark"."user_id" FROM "Bookmark_bookmark"; args=()
(0.000) SELECT "Bookmark_page"."id", "Bookmark_page"."url" FROM "Bookmark_page" WHERE "Bookmark_page"."id" = 1 ; args=(1,)
(0.004) SELECT "Bookmark_page"."id", "Bookmark_page"."url" FROM "Bookmark_page" WHERE "Bookmark_page"."id" = 2 ; args=(2,)
DjangoのテストでSQLをロギングする
- セットアップでロガーを有効にする
from django.conf import settings
from django.test import TestCase
from django.test.client import Client
class SimpleTest(TestCase):
@staticmethod
def setUpClass():
settings.DEBUG = True
import logging
l = logging.getLogger('django.db.backends')
l.setLevel(logging.DEBUG)
l.addHandler(logging.StreamHandler())
© 2006 矢木浩人