मेरे पास एक लिनक्स सर्वर पर एक Django ऐप है। विचारों में से एक में, print
कमांड का कुछ रूप निष्पादित किया गया है, और कुछ स्ट्रिंग मुद्रित हो जाती हैं। मैं कैसे पता लगा सकता हूं कि मुद्रित स्ट्रिंग क्या थी? क्या कोई लॉग इन है जिसमें इन चीजों को रखा जाता है?जब मैं अपने Django ऐप से उन्हें 'प्रिंट' करता हूं तो चीजें कहां जाती हैं?
उत्तर
आउटपुट टर्मिनल में होना चाहिए, जहां django शुरू किया गया था। (यदि आपने इसे सीधे शुरू नहीं किया है, तो मुझे विश्वास नहीं है कि इसे पढ़ने का कोई तरीका है)
जैसा कि लिंक्डलिंक्ड इंगित किया गया है, print
का उपयोग नहीं करना सबसे अच्छा है, क्योंकि इससे अपवाद हो सकते हैं! लेकिन यह एकमात्र कारण नहीं है: ऐसे उद्देश्यों के लिए मॉड्यूल (जैसे logging) बनाए गए हैं और उनके पास बहुत अधिक विकल्प हैं।
This site (तब भी जब यह 2008 से है) मेरे बयान की पुष्टि करें:
आप को पता है कि एक दृश्य के अंदर हो रहा है चाहते हैं, तेज तरीका एक प्रिंट बयान में ड्रॉप करने के लिए है। विकास सर्वर किसी भी प्रिंट स्टेटमेंट को सीधे टर्मिनल पर आउटपुट करता है; यह जावास्क्रिप्ट अलर्ट() के सर्वर-साइड विकल्प है।
यदि आप अपने लॉगिंग के साथ थोड़ा अधिक परिष्कृत बनना चाहते हैं, तो यह पाइथन के लॉगिंग मॉड्यूल (मानक लाइब्रेरी का हिस्सा) में बदलना उचित है। आप अपने settings.py में यह कॉन्फ़िगर कर सकते हैं: यहाँ वह वर्णन करता है, (साइट पर नज़र)
डिबगिंग-प्रयोजनों के लिए आप भी debug-mode सक्षम या django-debug-toolbar इस्तेमाल कर सकते हैं कि क्या करना है।
उम्मीद है कि यह मदद करता है! :)
प्रिंट "./manage.py रनरवर" या अन्य भिन्नताओं के साथ ठीक दिखता है - जैसे जोशुआ उल्लेख करता है, यह टर्मिनल में दिखाई देता है जहां आपने इसे शुरू किया था। यदि आप क्रॉन या ऐसे से एफसीजीआई चला रहे हैं, तो यह केवल शून्यता में फंस जाता है और आप इसे पूरी तरह से खो देते हैं।
उन स्थानों के लिए जहां मैं चेतावनी या नोटिस जैसे "प्रिंट" करना चाहता हूं, मैं पाइथन के लॉगर का एक उदाहरण उपयोग करता हूं जो आउटपुट को कैप्चर करने और इसे किसी जगह पर रखने के लिए syslog पर जाता है। मैं मॉड्यूल में से एक में प्रवेश का एक उदाहरण का दृष्टांत के रूप में यह लोड हो जाता है - models.py जगह मैं उठाया, बस अपनी सुविधा के लिए था और मैं यह हमेशा का मूल्यांकन किया जायेगा से पहले अनुरोधों में रोलिंग आया जानता था
import logging, logging.handlers
logger = logging.getLogger("djangosyslog")
hdlr = logging.handlers.SysLogHandler(facility=logging.handlers.SysLogHandler.LOG_DAEMON)
formatter = logging.Formatter('%(filename)s: %(levelname)s: %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
। फिर जब आप अपने विचारों में लकड़हारा या जो कुछ भी करने के लिए संदेश आह्वान करने के लिए करना चाहते हैं:
logger = logging.getLogger("djangosyslog")
logging.warning("Protocol problem: %s", "connection reset", extra=d)
है .त्रुटि(), .critical(), और अधिक - वास्ते जानकारी के लिए http://docs.python.org/library/logging.html की जाँच करें।
रॉब हडसन की डीबग टूलबार बहुत अच्छी है यदि आप उस डीबग जानकारी की तलाश में हैं - मैं इसे अक्सर विकास में उपयोग करता हूं। यह आपको किसी भी दिए गए पृष्ठ को उत्पन्न करने के लिए उपयोग किए गए SQL सहित वर्तमान अनुरोध और प्रतिक्रिया के बारे में डेटा देता है। आप तारों को संदर्भ/प्रतिक्रिया में रुचि रखते हुए प्रिंट को उस डेटा में इंजेक्ट कर सकते हैं - लेकिन मुझे लगता है कि इससे निपटने में थोड़ा मुश्किल होना चाहिए।
एक चेतावनी: यदि आप डब्लूएसजीआई के तहत प्रिंट स्टेटमेंट के साथ कोड को तैनात करने का प्रयास करते हैं, तो चीजों को तोड़ने की उम्मीद है। इसके बजाय लॉगिंग मॉड्यूल का प्रयोग करें।
कभी भी प्रिंट का उपयोग न करें, जैसा कि आप तैनात करते हैं, यह stdout पर प्रिंट करेगा और डब्लूजीएसआई टूट जाएगा।
लॉगिंग का उपयोग करें। विकास उद्देश्यों के लिए, सेटअप करना वास्तव में आसान है। आपकी परियोजना पर __init__.py:
import logging
from django.conf import settings
fmt = getattr(settings, 'LOG_FORMAT', None)
lvl = getattr(settings, 'LOG_LEVEL', logging.DEBUG)
logging.basicConfig(format=fmt, level=lvl)
logging.debug("Logging started on %s for %s" % (logging.root.name, logging.getLevelName(lvl)))
अब जो कुछ भी आप लॉग करते हैं, वह इस मामले में, आपका टर्मिनल है।
logging.debug("Oh hai!")
इसके अलावा आप एक LOG_LEVEL सेटिंग के साथ अपने settings.py पर शब्दाडंबर नियंत्रित कर सकते हैं।
- 1. जब मैं एक्सकोड 4 में "संग्रह के लिए बिल्ड" करता हूं, तो फाइल कहां जाती है?
- 2. प्रिंटक() प्रिंट कहां से प्रिंट करता है?
- 3. क्यों ट्यूपल की चीजें पढ़ी जाती हैं?
- 4. जब मैं उन्हें इनलाइन असेंबली
- 5. जब मैं स्टार्टअप फॉर्म बंद करता हूं तो ऐप को समाप्त करने से कैसे रोकूं?
- 6. नई विधियां कहां जाती हैं?
- 7. जब मैं अपने आईफोन
- 8. जब मैं ऑब्जेक्ट प्रिंट करता हूं तो ToString() विधि को क्यों कहा जाता है?
- 9. कोई मॉड्यूल जब चीजें हैं जो अनुप्रेषित
- 10. जब कोई उपयोगकर्ता ऐप अपडेट करता है तो एंड्रॉइड ऐप्स में साझा प्राथमिकताएं हटा दी जाती हैं?
- 11. जब मैं विजुअल स्टूडियो में प्रोजेक्ट अनलोड करता हूं, तो वीएस इस सेटिंग को कहां से सुरक्षित करता है?
- 12. अगर मैं स्टॉप ऐप को मजबूर करता हूं तो व्हाट्सएप सेवा फिर से शुरू हो जाती है?
- 13. जब मैं hadoop fs-mkdir का उपयोग करता हूं तो मेरी फ़ाइलें (डीआईआर) कहां संग्रहीत होती हैं?
- 14. मैं अपने मोजे कहां रखूं?
- 15. मैं अपने एंड्रॉइड ऐप में अपने विज्ञापन कैसे तेजी से प्रदर्शित कर सकता हूं?
- 16. जब मैं एंकर पॉइंट सेट करता हूं, तो मेरी छवि
- 17. जब मैं नींद का उपयोग करता हूं तो लूप के प्रत्येक पुनरावृत्ति पर आउटपुट कुछ भी प्रिंट नहीं करता है?
- 18. मैं अपने टर्मिनल का रंग कैसे बदलूं। ऐप जब मैं हेरोकू पर अपने उत्पादन रिमोट में लॉग इन करता हूं?
- 19. जब मैं इसे नेटबीन्स से बनाता हूं तो डर्बी डेटाबेस कहां संग्रहीत किया जाता है?
- 20. जब मैं अपने प्रोग्राम से बाहर निकलता हूं तो जीपीएस प्रोग्रामेटिक रूप से बंद करें
- 21. अचानक, जब तक मैं उन्हें "perl" के साथ उपसर्ग नहीं करता हूं और स्क्रिप्ट
- 22. जब मैं किसी तत्व पर क्लिक करता हूं तो मैं जावास्क्रिप्ट को कैसे चलाता हूं?
- 23. जब मैं अपने एक्सएस को पर्ल 5.10 के साथ संकलित करता हूं तो मुझे "अपरिभाषित संदर्भ" त्रुटियां क्यों मिलती हैं?
- 24. जब मैं 'गिट पुश' करता हूं तो गिट हुक रिमोट पर धकेलते हैं?
- 25. ग्रहण में, मैं कैसे देख सकता हूं कि जावा कक्षाएं कहां से लोड की जाती हैं?
- 26. जब मैं अपने एंकरपॉइंट को बदलने के बाद अपना फ्रेम सेट करता हूं तो मेरा दृश्य क्यों चलता है?
- 27. अगर मैं अपने ऑब्जेक्ट कॉन्टेक्स्ट का निपटान करता हूं, तो मेरी संस्थाएं अलग-अलग हैं?
- 28. क्या नई चीजें अप्रचलित हैं?
- 29. जब मैं एचजी पुल करता हूं और एचजी अद्यतन करता हूं तो
- 30. मैं अपने आईओएस ऐप को iFunbox
यह सही है। साथ ही, यदि आप फ़ाइलों को सर्वर पर अपाचे का उपयोग कर रहे हैं, तो मुझे पता है कि जब भी आप 'प्रिंट' कथन दबाते हैं तो mod_wsgi एक अप्राप्य त्रुटि फेंकता है; जैसे यदि आप 'प्रिंट' करते हैं तो अय्यूब ठीक हो गया है! "आपके ऐप में, जब आप इसे अपाचे पर डालते हैं तो आपकी स्क्रिप्ट मर जाएगी (असीमित अपवाद)। इस कारण से, मैं अपने django ऐप्स में प्रिंट का उपयोग करने से बचता हूं। – linked
@ लिंक्डलिंक्ड: केवल तभी यदि आप उपयुक्त कॉन्फ़िगरेशन निर्देशों का उपयोग नहीं करते हैं। –