2012-10-17 7 views
12

प्रश्न this जैसा ही है, हालांकि मैं अपने logging.FileHandler पर अपने वर्बोज़ अनुरोध जानकारी को लॉग इन करना चाहता हूं - यानी मेरे वेबसर्वर लॉग को देखने के बजाय। मैंने कोशिश की है और हैंडलर को 4xx और 5xx अनुरोध जानकारी के अलावा कुछ और लिखने के लिए डिफ़ॉल्ट लॉगर django.requests सेट करने में विफल रहा है।Django verbose अनुरोध लॉगिंग

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

उत्तर

18

मैं नहीं कह सकता कि मैंने एक संपूर्ण खोज की है, लेकिन मैं django 1.4.1 के django/core/handlers/base.py पर देख सकता हूं, django.request लॉगर वास्तव में केवल चेतावनियों और त्रुटि शर्तों (4xx/5xx) के लिए उपयोग किया जाता है।

यह कहा गया है कि मिडलवेयर लिखना मुश्किल है जो आपके लिए लॉगिंग के सभी प्रकार करेगा। शुरू करने के लिए कुछ बहुत आसान हो सकता है:

from time import time 
from logging import getLogger 

class LoggingMiddleware(object): 
    def __init__(self): 
     # arguably poor taste to use django's logger 
     self.logger = getLogger('django.request') 

    def process_request(self, request): 
     request.timer = time() 
     return None 

    def process_response(self, request, response): 
     self.logger.info(
      '[%s] %s (%.1fs)', 
      response.status_code, 
      request.get_full_path(), 
      time() - request.timer 
     ) 
     return response 
+0

उत्तर के लिए धन्यवाद। सहमत, कस्टम लुढ़का समाधान बहुत बुनियादी है। – markdsievers

+0

मुझे यकीन नहीं है कि आपको कुछ और मिल जाएगा - मेरा जवाब यह भी उल्लेख करता है कि मुझे django को सफल अनुरोध लॉगिंग करने में नहीं लगता है ... –

+1

आपको इसे.py.py में कैसे एकीकृत करना है? –