2012-07-03 10 views
5

मैं इस कोशिश की:wsgi python ऐप को डीबग/लॉग कैसे करें?

#!/usr/bin/python  

from wsgiref.simple_server import make_server 
from cgi import parse_qs, escape 
import logging 
import os 
import sys 

html = """ 
<html> 
<body> 
    <form method="post" action="parsing_post.wsgi"> 
     <p> 
     Age: <input type="text" name="age"> 
     </p> 
     <p> 
     Hobbies: 
     <input name="hobbies" type="checkbox" value="software"> Software 
     <input name="hobbies" type="checkbox" value="tunning"> Auto Tunning 
     </p> 
     <p> 
     <input type="submit" value="Submit"> 
     </p> 
     </form> 
    <p> 
     Age: %s<br> 
     Hobbies: %s 
     </p> 
    </body> 
</html> 
""" 

def application(environ, start_response): 

    # the environment variable CONTENT_LENGTH may be empty or missing 
    try: 
     request_body_size = int(environ.get('CONTENT_LENGTH', 0)) 
    except (ValueError): 
     request_body_size = 0 

    # When the method is POST the query string will be sent 
    # in the HTTP request body which is passed by the WSGI server 
    # in the file like wsgi.input environment variable. 
    logger = logging.getLogger(__name__) 
    request_body = environ['wsgi.input'].read(request_body_size) 
    d = parse_qs(request_body) 


    age = d.get('age', [''])[0] # Returns the first age value. 
    hobbies = d.get('hobbies', []) # Returns a list of hobbies. 

    # Always escape user input to avoid script injection 
    age = escape(age) 
    hobbies = [escape(hobby) for hobby in hobbies] 

    response_body = html % (age or 'Empty', 
       ', '.join(hobbies or ['No Hobbies'])) 

    status = '200 OK' 

    response_headers = [('Content-Type', 'text/html'), 
        ('Content-Length', str(len(response_body)))] 
    start_response(status, response_headers) 

    return [response_body] 

लेकिन मैं नहीं जानता कि जहां यह लॉग करता है। मैं वेबपृष्ठ पर या फ़ाइल /var/log/apache2/myapp.log

पर मूल्य प्रदर्शित/लॉग करने का प्रयास कर रहा हूं, ऐसा करने का सबसे अच्छा तरीका क्या है?

किसी भी उत्तर की अत्यधिक सराहना की जाएगी। उन्नत में धन्यवाद।

+0

https://code.google.com/p/modwsgi/wiki/DebuggingTechniques –

उत्तर

3

ध्यान दें कि उपर्युक्त कोड वास्तव में किसी भी लॉग का उत्पादन नहीं करेगा क्योंकि आप logger.log() प्रकारों में से किसी को भी नहीं बुलाते हैं - लेकिन मुझे लगता है कि यह बात नहीं है।

यदि आप अपाचे/mod_wsgi के साथ अपना कोड चला रहे हैं, तो सबसे आसान समाधान है स्ट्रीमरैंडर (सीएफ http://docs.python.org/howto/logging.html#configuring-logging) का उपयोग करके sys.stderr पर लॉग इन करने के लिए अपने लॉगर को कॉन्फ़िगर करना, और त्रुटि लॉग पथ, नाम और परिभाषित करना है। आपके अपाचे conf में स्तर (सावधान रहें, डिफ़ॉल्ट अपाचे व्यवहार केवल "त्रुटि स्तर" संदेश लॉग करना है)।

+2

और https://code.google.com/p/modwsgi/wiki/DebuggingTechniques आपको लॉग स्तर को बढ़ाने का तरीका बताता है। –

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