2017-07-15 14 views
10

पर लॉग नहीं भेज रहा है, मैं अपने django सर्वर से केंद्रीकृत लॉगिंग के लिए ईएलके स्टैक का उपयोग कर रहा हूं। मेरे ELK ढेर एक दूरस्थ सर्वर पर है और logstash.conf इसDjango सर्वर लॉगस्टैश

input { 
    tcp { 
    port => 5959 
    codec => json 
    } 
} 
output { 
    elasticsearch { 
    hosts => ["xx.xx.xx.xx:9200"] 
    } 
} 

दोनों सेवाओं elasticsearch और logstash काम कर रहे हैं की तरह लग रहा (docker-compose logs logstash का उपयोग कर जाँच की)।

मेरी Django सर्वर की सेटिंग्स फ़ाइल प्रवेश करने की है की तरह

नीचे
LOGGING = { 
    'version': 1, 
    'handlers': { 
     'logstash': { 
      'level': 'INFO', 
      'class': 'logstash.TCPLogstashHandler', 
      'host': 'xx.xx.xx.xx', 
      'port': 5959, # Default value: 5959 
      'version': 0, # Version of logstash event schema. Default value: 0 (for backward compatibility of the library) 
      'message_type': 'django', # 'type' field in logstash message. Default value: 'logstash'. 
      'fqdn': True, # Fully qualified domain name. Default value: false. 
      'tags': ['django.request'], # list of tags. Default: None. 
     }, 
    }, 
    'loggers': { 
     'django.request': { 
      'handlers': ['logstash'], 
      'level': 'DEBUG', 
    }, 
} 
} 

मैं अपने Django सर्वर चलाने के लिए और logstash हैंडलर लॉग संभालती के रूप में कंसोल से पता चलता नहीं logs.I Django सर्वर में अजगर-logstash पुस्तकालय का इस्तेमाल किया इसके बाद के संस्करण के निर्माण के लिए conf conf लेकिन लॉग मेरी दूरस्थ सर्वर

मैं कई प्रश्न के माध्यम से जाँच की नहीं भेजा जाता, सत्यापित है कि चल रही सेवाओं बंदरगाहों सही कर रहे हैं, लेकिन कोई सुराग नहीं क्यों लॉग नहीं भेजे जा रहे configurati को देखते हुए

+0

क्या आप वाकई "django.request" सभी घटनाओं को फ़िल्टर नहीं करते हैं? –

+0

Django अनुरोध सभी अनुरोध लॉग भेजना है –

+0

क्या आपने 'fqdn' को 'गलत' में बदलने का प्रयास किया है? –

उत्तर

2

logstash को चालू, लॉगर "django.request" को "DEBUG" स्तर पर सेट किया गया है और हैंडलर "लॉगस्टैश" स्तर "INFO" पर सेट है। मेरा अनुमान है कि हैंडलरDEBUG संदेशों को संसाधित नहीं करेगा। मुझे यकीन नहीं है हालांकि।

लॉगर और हैंडलर के लिए समान स्तर सेट करें जो यह काम करता है कि यह काम करता है।

उपयोग करने का स्तर किस स्तर पर आप अपने लॉग से चाहते हैं इस पर निर्भर करता है। इस मामले में मुझे लगता है कि स्तर INFO पर्याप्त होगा।

यदि पहले से ही पर Django logging

नोट एक बार देख ले नहीं: टिप्पणियों से यह समस्या को हल करने के लिए नहीं है, लेकिन मुझे आशा है कि यह वैसे भी उपयोगी है लगता है।

अद्यतन:

मैं निम्नलिखित विन्यास की कोशिश की और यह "debug.log" में 404 और 500 त्रुटियों फैल जाती है।

LOGGING = { 
'version': 1, 
'disable_existing_loggers': False, 
'handlers': { 
    'logfile': { 
     'level': 'WARNING', 
     'class': 'logging.FileHandler', 
     'filename': os.path.join(PROJECT_DIR, 'debug.log'), 
    }, 
}, 
'loggers': { 
    'django.request': { 
     'handlers': ['logfile'], 
     'level': 'WARNING', 
     'propagate': True, 
    }, 
}} 

इस परीक्षण कॉन्फ़िगरेशन के साथ लॉगस्टैश हैंडलर को कम से कम संदेश/logrecord प्राप्त करना चाहिए। यदि कोई भाग्य नहीं है तो मैं यह सुनिश्चित करने के लिए logstash.TCPLogstashHandler और SocketHandler (TCPLogstashHandler द्वारा विरासत में) को डीबग करने का सुझाव देने का सुझाव देता हूं ताकि वे उत्सर्जित रिकॉर्ड प्राप्त कर सकें।

+0

आपका बिंदु सही लगता है तो आप इसे हल करने के लिए क्या सुझाव देंगे? –

+0

स्तर डीबग – herm

+0

स्तर पर लॉगस्टैश सेट करें मैंने स्तर जानकारी का उपयोग करने का सुझाव दिया है। लॉग संदेश कैसे बनाए जाते हैं, इस पर निर्भर करते हुए, कभी-कभी डीबीयूजी लॉगिंग को चालू और बंद करने में सक्षम होना अच्छा होता है, जिसके आधार पर पर्यावरण का उपयोग किया जाता है। उदाहरण के लिए django mail_admins के लिए इसका उपयोग करता है। –

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