How to disable south debug logging in django?
Asked Answered
E

3

13

When I run my tests in Django, after a fail I got several pages of debug output from South, like these:

south: DEBUG: south execute "CREATE INDEX "sometable_4d5bad5" ON "video_playable" ("network_id");" with params "[]"
south: DEBUG: south execute "CREATE INDEX "sometable_790e6d98" ON "video_playable" ("published");" with params "[]"
south: DEBUG: south execute "CREATE INDEX "sometable_72312277" ON "video_playable" ("archived");" with params "[]"

And with all this logging output, the relevant error messages are lost in a sea of garbage. Is there a way to disable this ouput?

Ebon answered 20/12, 2011 at 15:57 Comment(1)
This is a really helpful post - pypede.wordpress.com/2012/06/17/…Barbera
N
15

Put this somewhere in your code. I have it in myapp/migrations/__init__.py

import logging
south_logger=logging.getLogger('south')
south_logger.setLevel(logging.INFO)
Nike answered 27/6, 2012 at 12:10 Comment(0)
U
7

You can set SOUTH_TESTS_MIGRATE to False in your setting.py. This will disable all migrations during the tests. I know it's not exactly what you want, but hope will be usefull

If this is False, South’s test runner integration will make the test database be created using syncdb, rather than via migrations (the default). Set this to False if you have migrations which take too long to migrate every time tests run, but be wary if you rely on migrations to do special things.

Uncouple answered 20/12, 2011 at 19:4 Comment(1)
yes, this does not exactly solve my problem, because currently my tests depend on data migrations. but these messages are so annoying that redesigning the tests are worth the trouble... thanks!Ebon
N
3
import logging
import south.logger
logging.getLogger('south').setLevel(logging.CRITICAL)

I am able to set this in my setting/testing.py

Also if this is only bothering you with your django-nose tests add

nosetests --nologcapture
Nodarse answered 31/8, 2012 at 19:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.