2012-04-24 18 views
9

Am, अजगर 2.6Django लॉगिंग - लकड़हारा और अतिरिक्त संदर्भ पर Django 1.3

Django डॉक्स में django.request यहाँ
https://docs.djangoproject.com/en/1.3/topics/logging/#django-request
यह कहता है कि संदेशों निम्नलिखित अतिरिक्त संदर्भ है: स्थिति और अनुरोध।
डीबग फ़ाइल में इन्हें दिखाने के लिए आप इन्हें कैसे प्राप्त करते हैं? मैं तरह मेरे लॉगिंग config कुछ में करने की कोशिश की:

'formatters': {   
     'simple_debug': { 
      'format': '[%(asctime)s] %(levelname)s %(module)s %(message)s %(request.user)s',   
     } 
    }, 

लेकिन है कि कुल मिलाकर लॉगिंग विफल (यानी कोई लॉगिंग उत्पादन होता है) का कारण बनता है


संपादित करें: तो तुरंत सवाल मैं जमा करने के बाद/

012,351 पर विस्तृत http://groups.google.com/group/django-users/browse_thread/thread/af682beb1e4af7f6/ace3338348e92a21

किसी की मदद कर सकते हैं व्याख्या करते हैं: इस में आए

दस्तावेज़ों से सभी उद्धरण वास्तव में इसका मतलब है कि django के के अंदर सभी जगहें जहां django.request का उपयोग किया जाता है, अनुरोध स्पष्ट रूप से अतिरिक्त के हिस्से के रूप में पारित किया गया है।

जहां अनुरोध अतिरिक्त रूप से अतिरिक्त रूप में पारित किया गया है?

उत्तर

19

आप प्रारूप स्ट्रिंग में request.user का उपयोग नहीं कर सकते, क्योंकि% -formatting इसे संभाल नहीं करता है। तुम एक प्रारूप स्ट्रिंग जैसे

'[%(asctime)s] %(levelname)s %(module)s %(message)s %(user)s' 

इस्तेमाल कर सकते हैं और, अपने प्रवेश कॉल में, जैसे

logger.debug('My message with %s', 'args', extra={'user': request.user}) 

extra dict लॉगिंग घटना रिकॉर्ड है, जो एक user विशेषता के साथ समाप्त होता है में विलय कर दिया गया है कुछ का उपयोग , और फिर यह प्रारूप स्ट्रिंग के माध्यम से उठाया जाता है और लॉग में दिखाई देता है।

django.request लॉगर का उपयोग करते हुए, status_code और अनुरोध Django द्वारा extra dict में पारित किया जाएगा।

class RequestUserFilter(logging.Filter): 
    def filter(self, record): 
     record.user = record.request.user 
     return True 

ताकि आप स्वरूपित उत्पादन में उपयोगकर्ता को दिखा सकते हैं: आप request.user की जरूरत है, तो आप शायद एक logging.Filter जो की तरह कुछ करता जोड़ने की आवश्यकता होगी।

+0

आह! वह पूरी तरह से समझ में आता है। धन्यवाद। –

0

django-requestlogging middleware pluginextra पैरामीटर के साथ request जोड़ने के लिए कहता है यह आसान अपने सभी प्रवेश समायोजित किए बिना अनुरोध से संबंधित जानकारी लॉग इन करने में आता है। यह सिर्फ आपके लॉगर्स को कॉन्फ़िगर करने का मामला है।जब Django-requestlogging का उपयोग कर

निम्नलिखित मदों लॉग इन किया जा सकता है:

  • उपयोगकर्ता नाम
  • http_user_agent
  • PATH_INFO
  • remote_add
  • request_method
  • server_protocol
संबंधित मुद्दे