2014-04-15 15 views
12

मैं अपने परीक्षणों से आउटपुट के अंदर लॉगिंग आउटपुट को घुमाने से नोजेटेट्स को कैसे रोकूं? मैं सिर्फ इस तरह मेरी Django कोड के लिए लॉगिंग जोड़ने की है:मुद्रण लॉगिंग जानकारी से nosetests बंद करो?

nosetests --nocapture 

मैं इस मिल:

import logging 
logger = logging.getLogger(__name__) 

def home_page(request, template): 
    device = get_device_capabilities(request) 
    device_type = get_device_type(device) 
    logger.info("device_type = " + device_type) 
    logger.info("screen_width = " + str(screen_width)) 

जब मैं इस तरह परीक्षण चलाने

[04/15/2014 02:42:57 PM] INFO [apps.home.views:24] device_type = computer 
[04/15/2014 02:42:57 PM] INFO [apps.home.views:25] screen_width = 800 
.................................................................................................................................................................................................................................... 
---------------------------------------------------------------------- 
Ran 230 tests in 42.521s 

OK 

मैं बस अपवादों और लॉगिंग जानकारी को बढ़ाने के साथ शुरू करना और मैं निश्चित रूप से नहीं चाहता कि मेरा परीक्षण आउटपुट मेरे लॉगर स्टेटमेंट से आउटपुट के साथ बिगड़ जाए। मैंने सोचा था कि "--nocapture" झंडा इसे रोकने के लिए माना जाता था। मैंने सभी नवीनतम दस्तावेज़ों को स्किम किया है और कुछ भी नहीं देखा जो मदद करेगा। क्या मैं कुछ भूल रहा हूँ? क्या मेरे आउटपुट में मेरे लॉगर संदेशों को शामिल करने से नोजेट्स को रोकने का कोई तरीका है?

धन्यवाद!

उत्तर

23

उन लोगों के लिए धन्यवाद जिन्होंने मेरे प्रश्न का उत्तर दिया। मैंने अमेज़ेनिन के समाधान को लागू नहीं करना चुना क्योंकि यह मेरे परीक्षणों को चलाने के तरीके से बहुत अलग था और मैं नहीं बदलना चाहता था। ओलेक्सिया के समाधान कुछ लॉगिंग संदेशों से छुटकारा पाये लेकिन उनमें से सभी नहीं। मुझे काफी नहीं मिला कि गार्डन्यून क्या हो रहा था लेकिन यह मेरी गलती है।

अधिक शोध के बाद, मुझे एहसास हुआ कि मैं गलत तरीके से गलत तर्क निर्दिष्ट कर रहा था। यह "--nocapture" नहीं है जैसा कि मैंने अपने प्रारंभिक प्रश्न में इंगित किया है, बल्कि "--nologcapture"। जब मैंने यह तर्क निर्दिष्ट किया, तो मेरे सभी लॉगिंग संदेश छिपाए गए।

+1

'लॉग इन प्लगइन' _nologcapture _disable_ नहीं है, जिसके परिणामस्वरूप लॉग संदेश इनलाइन दिखाई दे रहे हैं? – munchybunch

2

मैं अपने settings.py में कुछ इस तरह डाल करने के लिए आप कर सकते हैं सुझाव:

if 'test' in sys.argv: 
    # disable loggers output 
    LOGGING["loggers"] = {} 

btw, मैं nose और doctests परीक्षण प्रयोजनों के लिए उपयोग कर रहा तो मेरी पूर्ण टेम्पलेट इस तरह दिखता है:

if 'test' in sys.argv: 
    # add Nose to INSTALLED_APPS for running tests 
    INSTALLED_APPS = INSTALLED_APPS + ('django_nose',) 
    TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' 
    NOSE_ARGS = ['--with-doctest'] 
    # change DB to sqlite3, when running test for speedup 
    DATABASES['default'] = {'ENGINE': 'django.db.backends.sqlite3'} 
    # disable loggers output 
    LOGGING["loggers"] = {} 

युपीडी। यह बताना भूल गया कि मैं python manage.py test के साथ परीक्षण चलाता हूं, इसलिए मैं sys.argv में देख सकता हूं।

0

इस प्रयास करें:

logging.disable(logging.CRITICAL) या logging.disable(logging.NOTSET)

यह निर्दिष्ट गंभीरता स्तर के साथ प्रवेश कॉल को निष्क्रिय कर देगा।

4

आप अन्य सभी लॉगिंग हैंडलर को साफ़ करने के लिए हमेशा --logging-clear-handlers के साथ नाक चला सकते हैं।

संबंधित मुद्दे