「Django 生成されるSQLをロギングする」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「==Django 生成されるSQLをロギングする== [Django] ===Django ロギング設定 に変更を加える=== *Django ロギング設定 に、DEBUG = True の…」) |
|||
1行目: | 1行目: | ||
==Django 生成されるSQLをロギングする== | ==Django 生成されるSQLをロギングする== | ||
− | [Django] | + | [[Django]] |
===Django ロギング設定 に変更を加える=== | ===Django ロギング設定 に変更を加える=== | ||
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 | ||
... | ... |
2020年2月15日 (土) 08:01時点における版
目次
Django 生成されるSQLをロギングする
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 矢木浩人