2014-01-31 3 views
1

Pycharm에 문제가 있습니다.dchango.db.backends에서 stdout의 로그보기를 참조하십시오

테스트를 실행할 때 django.db.backends 로그를 stdout/stderr에 표시 할 수 없습니다.

runserver을 사용할 때 매력처럼 작동합니다.

level=DEBUG을 사용하여 모든 로그를 표시하는 간단한 해결책이 있습니까? 테스트에 있습니까?

더 많은 정보 : DEBUG이 내 설정 내가 SOUTH_TESTS_MIGRATE = False 사용

  • SKIP_SOUTH_TESTS = True
  • 을에 True로 설정되어 내

    • 내가 그것을 아무것도있다 감히 당신에게

    +0

    당신이 남쪽이 관여에 대해 어떻게 생각 하죠? 왜 그걸 언급하니? –

    +0

    남쪽에서 일부 로깅을 사용하지 않도록 설정했는지 모르겠지만 내 마이그레이션 속도를 높이기 위해 남쪽 마이그레이션을 실행하지 않으려합니다. –

    답변

    4

    첫째, 장고 힘 settings.DEBUG을

    https://docs.djangoproject.com/en/1.5/topics/logging/#configuring-logging

    는 틀림없이 내가 여기에 실제 노력을 아니지만, 설정이 같은 아마 뭔가 파일은 당신에게 아이디어를 줄 것이다 UnitTest (Writing and running tests in Django) 동안 False로 설정하십시오. 그래서 당신은 override_settings 장식하여이 설정을 일시적으로 활성화해야합니다 장고 문서에서

    :

    from django.test import TestCase 
    from django.test.utils import override_settings 
    
    class LoginTestCase(TestCase): 
    
        @override_settings(LOGIN_URL='/other/login/') 
        def test_login(self): 
         response = self.client.get('/sekrit/') 
         self.assertRedirects(response, '/other/login/?next=/sekrit/') 
    

    하지만 장고 소스 코드를 읽고, 당신은 또한 connectionuse_debug_cursor 속성을 설정할 수 있습니다 개체입니다. True로 설정하면 CursorDebugWrapper이 사용되고 쿼리 로그가 나타납니다. 장고 소스에서

    추출 (django/db/backends/__init__.py) :

    class BaseDatabaseWrapper(object): 
        # [...] 
        def cursor(self): 
         self.validate_thread_sharing() 
         if (self.use_debug_cursor or 
          (self.use_debug_cursor is None and settings.DEBUG)): 
          cursor = self.make_debug_cursor(self._cursor()) 
         else: 
          cursor = util.CursorWrapper(self._cursor(), self) 
         return cursor 
    
        def make_debug_cursor(self, cursor): 
         return util.CursorDebugWrapper(cursor, self) 
    
    +0

    @override_settings (DEBUG = True)는 잘 작동합니다. 감사합니다. –

    2

    감사 pycharm로해라. 그것은 당신이 싸우고있는 표준 파이썬입니다. 언뜻 보면 로깅을 잡음이 많은 방법으로 구성하는 방법을 묻는 것 같습니다. ...

    LOGGING = { 
        'version': 1, 
        'disable_existing_loggers': True, 
        'formatters': { 
         'simple': {'format': '%(asctime)s %(levelname)s %(message)s'}, 
        }, 
        'handlers': { 
         'console':  {'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'simple'}, 
        }, 
        'loggers': { 
         'django.db.backends': {'level': 'DEBUG', 'handlers': ['console'], 'propagate': False}, 
    } 
    
    +0

    John Mee, 감사합니다.하지만 내 테스트에서 내 django.db.backends 요청을 아직 보지 못합니다. : 여기 내 settings.py http://pastebin.com/mjdiCycD의 일부 –

    +0

    내 출력 http://pastebin.com/V1RHAfmh –

    +0

    아, oui. 우연한 기회. –

    관련 문제