2013-07-19 6 views
5

मैं सेटिंग्स सेटिंग्स में कंसोल लॉग स्तर को ओवरराइड करने में सक्षम होना चाहता हूं। मैंने django logging document पढ़ा है, लेकिन मुझे लॉगिंग करने में परेशानी हो रही है जो मैं चाहता हूं। दस्तावेज मुझे आश्वासन देता है कि:django कंसोल लॉग स्तर बदलने के लिए संक्षिप्त तरीका

"Django 1.5 आगे से, परियोजना की लॉगिंग कॉन्फ़िगरेशन Django के डिफ़ॉल्ट के साथ विलय हो गया है, इसलिए आप तय कर सकते हैं कि आप मौजूदा कॉन्फ़िगरेशन को जोड़ना चाहते हैं या प्रतिस्थापित करना चाहते हैं। डिफ़ॉल्ट कॉन्फ़िगरेशन को पूरी तरह से ओवरराइड करने के लिए, LOGGING dictConfig में True_existing_loggers कुंजी को सही पर सेट करें। वैकल्पिक रूप से आप कुछ या सभी लॉगर्स को फिर से परिभाषित कर सकते हैं। "

तो मैं बस अपना settings.py के लिए निम्न जोड़ने का प्रयास:

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'console':{ 
      'level': 'DEBUG', 
     }, 
    }, 
} 

... लेकिन मैं एक अपवाद प्राप्त करें:

<snip> 
    File "/usr/lib/python2.7/logging/config.py", line 575, in configure 
    '%r: %s' % (name, e)) 
ValueError: Unable to configure handler 'console': 'NoneType' object has no attribute 'split' 

पर्याप्त मेला। ऐसा लगता है कि संपूर्ण कॉन्फ़िगरेशन ब्लॉक है। तो मैंने कोशिश की है कि मैं क्या सोचा था कि सबसे सरल सांत्वना लकड़हारा config होगा:

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': True, 
    'formatters': { 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
    }, 
    'handlers': { 
     'console':{ 
      'level': 'INFO', 
      'class': 'logging.StreamHandler', 
      'formatter': 'simple' 
     }, 
    }, 
    'loggers': { 
     'default': { 
      'handlers': ['console'], 
      'level': 'INFO', 
      'filters': [] 
     } 
    } 
} 

मेरे इरादे जानकारी के लिए लॉग-स्तर सेट करने के लिए है, लेकिन मैं अभी भी डीबग संदेशों के एक गुच्छा देखते हैं, और स्ट्रिंग MYFORMATTER नहीं है वैसे भी उनमें से किसी में दिखाई देते हैं।

अंत में, अंधे आशावाद के साथ, मैं कोशिश की इस:

from django.utils.log import DEFAULT_LOGGING 
DEFAULT_LOGGING['handlers']['console']['level'] = 'INFO' 

मैं यहाँ काफी स्पष्ट कुछ कमी की जानी चाहिए।

बीटीडब्ल्यू, मैं Django 1.5.1 का उपयोग कर रहा हूँ।

+0

आपको [sentry] (https://github.com/getsentry/sentry) में रुचि हो सकती है। –

उत्तर

3

यहाँ मेरे अपने प्रश्न का उत्तर देना, मैं settings.py फ़ाइल में निम्न के साथ जा रहा समाप्त हो गया:

import logging 

logging.basicConfig(
    level = logging.INFO, 
    format = " %(levelname)s %(name)s: %(message)s", 
) 
0

आप ऐसा कर सकते हैं Django लॉगिंग स्तर सेट करने के लिए:

import logging 
logging.disable(logging.INFO) 

logging.disable (LVL)

सभी वालों जो लकड़हारा के स्वयं पर पूर्वता लेता है के लिए एक अधिभावी स्तर LVL प्रदान करता है स्तर। जब की आवश्यकता पूरी हो जाती है तो पूरे एप्लिकेशन में अस्थायी रूप से लॉगिंग आउटपुट को थ्रॉटल करें, यह फ़ंक्शन उपयोगी हो सकता है। इसका प्रभाव सभी लॉगिंग गंभीरता एलवीएल और नीचे की कॉल को अक्षम करना है, ताकि यदि आप इसे IN12 के मान के साथ कॉल करते हैं, तो सभी आईएनएफओ और डीईबीयूजी कार्यक्रमों को त्याग दिया जाएगा, जबकि गंभीरता के चेतावनी और ऊपर के अनुसार संसाधित किया जाएगा लॉगर का प्रभावी स्तर। लॉगिंग.disable (lvl) पर कॉल के प्रभाव को पूर्ववत करने के लिए, logging.disable (logging.NOTSET) पर कॉल करें।

http://docs.python.org/2/library/logging.html#logging.disable

+0

हम्म।लेकिन यह काम नहीं करता है अगर अंतर्निहित लॉगर्स मुद्रित करने के लिए कॉन्फ़िगर किए गए हैं, कहें, INFO और मैं कंसोल पर DEBUG संदेश देखना चाहता हूं। – user2076663

+0

ठीक है, आपने अपने प्रश्न के विपरीत कहा;) – maazza

0

मैं एक ऐसी ही मुद्दा मैं एक "वर्ग याद आ रही थी था "मेरे हैंडलरों में से एक से।

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