簡體   English   中英

如何禁用django遷移調試日志記錄?

[英]How do I disable django migration debug logging?

非常類似於lafagundes關於南遷移調試日志記錄的問題 ,除了我沒有使用南 - 我使用普通的Django 1.7遷移。 我也在使用django-nose測試跑步者。

當我運行manage.py test ,沒有捕獲調試日志記錄輸出:

(codesy)lcrouch:codesy lcrouch$ ./manage.py test
nosetests --verbosity=1
Creating test database for alias 'default'...
......E...............................
======================================================================
ERROR: test_return_state (auctions.tests.utils_tests.IssueStateTest)
----------------------------------------------------------------------

當我運行單獨的測試模塊,例如./manage.py test auctions.tests.utils_tests ,調試日志輸出包括Django遷移中涉及的所有django.db.backends.schema: DEBUG行:

(codesy)lcrouch:codesy lcrouch$ ./manage.py test auctions.tests.utils_tests
nosetests auctions.tests.utils_tests --verbosity=1
Creating test database for alias 'default'...
E
======================================================================
ERROR: test_return_state (auctions.tests.utils_tests.IssueStateTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/lcrouch/code/codesy/codesy/auctions/tests/utils_tests.py", line 13, in test_return_state
    fake_gh_client = fudge.Fake(github_client).returns_fake().provides('get_repo').returns_fake().provides('get_issue').returns_fake().has_attr(state='open')
  File "/Users/lcrouch/python/codesy/lib/python2.7/site-packages/fudge/__init__.py", line 1133, in returns_fake
    exp = self._get_current_call()
  File "/Users/lcrouch/python/codesy/lib/python2.7/site-packages/fudge/__init__.py", line 765, in _get_current_call
    "Call to a method that expects a predefined call but no such call exists.  "
FakeDeclarationError: Call to a method that expects a predefined call but no such call exists.  Maybe you forgot expects('method') or provides('method') ?
-------------------- >> begin captured logging << --------------------
django.db.backends.schema: DEBUG: CREATE TABLE "django_migrations" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "app" varchar(255) NOT NULL, "name" varchar(255) NOT NULL, "applied" datetime NOT NULL); (params [])
django.db.backends.schema: DEBUG: CREATE TABLE "django_content_type" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(100) NOT NULL, "app_label" varchar(100) NOT NULL, "model" varchar(100) NOT NULL); (params [])
django.db.backends.schema: DEBUG: CREATE TABLE "django_content_type__new" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(100) NOT NULL, "app_label" varchar(100) NOT NULL, "model" varchar(100) NOT NULL, UNIQUE ("app_label", "model")); (params [])
...
django.db.backends.schema: DEBUG: DROP TABLE "socialaccount_socialapp"; (params [])
django.db.backends.schema: DEBUG: ALTER TABLE "socialaccount_socialapp__new" RENAME TO "socialaccount_socialapp"; (params [])

這使得回到實際失敗真的很難。

如何禁用此輸出? 在django或鼻子水平?

如果您不介意在測試中禁用遷移,可以通過在settings.py中添加以下內容來實現:

TESTING = 'test' in sys.argv

if TESTING:
    class DisableMigrations(object):
        def __contains__(self, item):
            return True

        def __getitem__(self, item):
            return "notmigrations"

    MIGRATION_MODULES = DisableMigrations() 

這將只是一次創建數據庫,而不是逐步完成每次遷移。

如果要保持遷移在測試中運行,則可以通過更新日志記錄設置來刪除消息。

TESTING = 'test' in sys.argv

if TESTING:
    LOGGING = {
        'version': 1,
        'handlers': {
            'file': {
                'level': 'DEBUG',
                'class': 'logging.FileHandler',
                'filename': '/tmp/codesy-debug.log',
            },
        },
        'loggers': {
            'django.db.backends.schema': {
                'handlers': ['file'],
                'propagate': True,
                'level': 'INFO',
            },
            '': {
                'handlers': ['file'],
                'level': 'DEBUG',
            }
        }
    }

要快速刪除日志消息,您可以運行:

./manage.py test --nologcapture

這些消息由nose logcapture插件捕獲,該插件具有用於微調的附加選項。 但是,django-nose有一個老問題 ,可能會阻止您使用命令行中的許多內容。 它計划在里程碑v1.4.2 ,但這已經過了一個月。 您可以使用.nosercnose.cfg文件解決這些問題 - 請參閱鼻子文檔格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM