2011-06-01 12 views
18

मुझे Django 1.3 शब्दकोश कॉन्फ़िगरेशन के साथ syslog लॉगिंग सेट करने पर कोई जानकारी नहीं मिल रही है। Django दस्तावेजों में syslog शामिल नहीं है और पायथन दस्तावेज स्पष्ट से कम है और शब्दकोश कॉन्फ़िगरेशन को बिल्कुल कवर नहीं करता है। मैंने निम्नलिखित के साथ शुरू किया है लेकिन मैं SysLogHandler को कॉन्फ़िगर करने के तरीके पर अटक गया हूं।Django 1.3 लॉगिंग शब्दकोश कॉन्फ़िगरेशन के साथ SysLogHandler को कैसे सेट करें

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': True, 
    'formatters': { 
     'verbose': { 
      'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' 
     }, 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
    }, 
    'handlers': { 
     'syslog':{ 
      'level':'DEBUG', 
      'class':'logging.handlers.SysLogHandler', 
      'formatter': 'verbose' 
     }, 

    }, 
    'loggers': { 
     'django': { 
      'handlers':['syslog'], 
      'propagate': True, 
      'level':'INFO', 
     }, 
     'myapp': { 
      'handlers': ['syslog'], 
      'propagate': True, 
      'level': 'DEBUG', 
     }, 
    }, 
} 

उत्तर

21

अंत में, इस सवाल का जवाब मिल गया मूल प्रश्न में विन्यास को संशोधित 'syslog' के लिए निम्नलिखित है: भविष्य की पीढ़ियों के लिए

from logging.handlers import SysLogHandler 
... 
     'syslog':{ 
      'level':'DEBUG', 
      'class': 'logging.handlers.SysLogHandler', 
      'formatter': 'verbose', 
      'facility': SysLogHandler.LOG_LOCAL2, 
     }, 
... 

चेतावनी: आप काफी यह वास्तव में क्या करना है उपर्युक्त की तरह, अजीब त्रुटियां होती हैं यदि आप सीधे कक्षा निर्दिष्ट करते हैं।

अद्यतन: मैं अभी अमेज़ॅन लिनक्स (और Django 1.5) में स्थानांतरित हो गया हूं और उसमें 'syslog' अनुभाग के लिए कॉन्फ़िगरेशन में निम्न परिवर्तन का उपयोग किया है ई पर्यावरण, 'पता' तर्क पर ध्यान दें:

'syslog':{ 
     'level':'DEBUG', 
     'class': 'logging.handlers.SysLogHandler', 
     'formatter': 'verbose', 
     'facility': 'local1', 
     'address': '/dev/log', 
    }, 
+0

मुझे लगता है कि यहां संदर्भ महत्वपूर्ण है - 'syslog' हैंडलर में है - है ना? इसके अलावा फॉर्मेटर तब तक काम नहीं करेगा जब तक कि यह परिभाषित न हो जाए। भ्रम से बचने के लिए इसे हटाने के लायक हो सकता है (मेरी तरह)। – ostergaard

+0

@ajostergaard यह स्पष्ट करने के लिए अपडेट किया गया है कि ये मूल शब्दकोश में परिवर्तन हैं। अगर वे अधिक स्पष्ट नहीं हैं तो मुझे बताएं। –

+0

हम इसे एक कस्टम टैग कैसे दे सकते हैं? मुझे rsyslog में मेरी लॉग प्रविष्टियों की पहचान करने और उन्हें फ़िल्टर करने की आवश्यकता है। आप इसे अजगर लॉगिंग में कर सकते हैं, लेकिन django में ऐसा करने के लिए, मुझे नहीं पता। क्या आपको पता है ? – Luv33preet

9

यह मेरे लिए (डिफ़ॉल्ट डेबियन पर) काम करता है।

  1. मुझे संदेह है कि /dev/log का पता उपयोग करने का संदेह यह है कि नेटवर्क का उपयोग करने का कोई प्रयास नहीं है।
  2. मैं '' का एक लकड़हारा लेबल का उपयोग कर लगता है कि जड़ लकड़हारा के बराबर इसलिए अधिकांश सामान

पकड़ेगा settings.py में:

LOGGING = { 
    'version': 1, 
    'handlers': { 
     'syslog':{ 
      'address': '/dev/log', 
      'class': 'logging.handlers.SysLogHandler' 
     } 
    }, 
    'loggers': { 
     '': { 
      'handlers': ['syslog'], 
      'level': 'DEBUG', 
     } 
    } 
} 
अनुप्रयोग में

:

import logging 
    logging.info("freakout info") 

प्रदान करता है:

john:/var/log$ sudo tail -1 user.log 
Dec 14 17:15:52 john freakout info 
+0

इस उत्तर में उठाए गए अंक 1 और 2 मेरे मामले की कुंजी थे – shadi

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