हरकू पर Django लॉग्स नहीं देख रहा है


14

मैं INFOअपने हेरोकू लॉग में Django द्वारा बनाई गई लॉग प्रविष्टियों (एक स्तर पर ) को नहीं देख रहा हूं ।

यह मेरा विन्यास है:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
        'not_development_filter': {
            '()': NotDevelopmentFilter,
        },
    },
    'handlers': {
        'console':{
            'level': 'INFO',
            'class': 'logging.StreamHandler',
        },
        'null': {
            'class': 'django.utils.log.NullHandler',
        },
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['not_development_filter'],
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
        }
    },
    'loggers': {
        '': {
            'handlers': ['mail_admins', 'console'],
            'level': 'INFO',
        },
        'django': {
            'handlers': ['console'],
        },
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
        'py.warnings': {
            'handlers': ['console'],
        },
    }
}

मैं हरोकू इंटरफ़ेस में लॉग प्रविष्टियों को देखना चाहता हूं। किसी भी विचार क्यों मैं उन्हें वहाँ नहीं देख रहा हूँ?


क्या आप कुछ देखते हैं अगर आप सिर्फ printकुछ करने के लिए stdout?
अनातोली टेकटोनिक

दो साल हो गए हैं;)
राम रचम

3
मैंने पाया कि यह अभी भी अनुत्तरित है। =)
अनातोली टेक्टोनिक

1
@RRRachum यदि यह हल हो गया है, तो एक उत्तर लिखें, या इसे किसी तरह बंद करें - अन्यथा यह लोगों के रडार पर पॉप अप करना जारी रखेगा।
माइक फिडलर

जवाबों:


1

में अजगर-आरंभ करने संबंधी अनुप्रयोग, एक लॉग कि टैग नहीं किया गया के लिए django, ERRORस्तर लॉग अप में दिखाने herokuलॉग, लेकिन INFOलॉग नहीं है।

टैग किए गए लॉग के लिए इसे काम करने के लिए django, इसे निम्नलिखित की तरह एक कॉन्फिग की जरूरत है (आपके समान):

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        '': {
            'handlers': ['console'],
            'level': 'INFO',
        },
        'django': {
            'handlers': ['console'],
            'level': 'INFO',
        },
    },
}

इसलिए यदि आप अपने विन्यास को समायोजित करते हैं अन्यथा प्रोफ़ाइल सहित अजगर-शुरू करना शुरू हो जाए, तो यह उम्मीद के साथ काम करना चाहिए।

यहाँ एक लॉग है जिसे django टैग नहीं किया गया है, जिसे मैंने इसमें जोड़ा है views/hello.py:

import logging
logger = logging.getLogger(__name__)

# Create your views here.
def index(request):
    logger.error('testing logging!')
    logger.info('testing info logging')
    logger.debug('testing debug logging')

    # return HttpResponse('Hello from Python!')
    return render(request, 'index.html')

जब मैंने पहली बार इसे आज़माया, तो केवल त्रुटि लॉग दिखाई दिया। जब मैंने पिछले एक के ऊपर कोड स्निपेट में लॉगिंग कॉन्फिग को जोड़ा था, तो जानकारी और त्रुटि लॉग दिखाई दिए। यह सब DEBUG = False(रेपो में कोड से बदला गया है, जिसमें है DEBUG = True)।

खाली स्ट्रिंग कुंजी के बजाय शायद यह बेहतर है, इसलिए सब कुछ लॉग किया गया है, loggersकेवल खाली स्ट्रिंग ( '') की तुलना में अधिक विशिष्ट प्रविष्टियां हैं ।

अंत में, आपकी लॉग फ़ाइल में, एक ऐसा मामला है जहां INFO लॉग कंसोल पर दिखाई नहीं देगा, या हेरोकू लॉग्स: यदि यह एक INFO लॉग है django.request, तो आपके कॉन्फिग के साथ यह केवल 'mail_admins'इसलिए जाएगा क्योंकि propagateयह है False। मुझे लगता है कि इस मामले में, इसे propagateस्थापित करने के लिए अधिक समझदारी होगी True

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.