मैं अपने अजगर आवेदन में मानक अजगर लॉगिंग मॉड्यूल का उपयोग कर रहा:लेज़ी लकड़हारा संदेश स्ट्रिंग मूल्यांकन
import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger("log") while True: logger.debug('Stupid log message " + ' '.join([str(i) for i in range(20)])) # Do something
मुद्दा है कि हालांकि डिबग स्तर सक्षम नहीं है, कि बेवकूफ लॉग संदेश प्रत्येक पाश यात्रा पर मूल्यांकन किया जाता है, जो प्रदर्शन को खराब तरीके से नुकसान पहुंचाता है।
क्या इसके लिए कोई समाधान है?
C++ में हम log4cxx
पैकेज है कि इस तरह मैक्रो प्रदान करता है:
LOG4CXX_DEBUG(logger, messasage)
प्रभावी रूप से
if (log4cxx::debugEnabled(logger)) { log4cxx.log(logger,log4cxx::LOG4CXX_DEBUG, message) }
का आकलन करती लेकिन उस के बाद से वहाँ (AFAIK), अगर वहाँ एक कारगर तरीका अजगर में कोई मैक्रो नहीं है लॉगिंग करने के लिए?
सरल और कुशल। मुझे वह पसंद है। यह अधिक upvotes कमाने चाहिए। – Rockallite
दक्षता इस मामले पर निर्भर करती है और आपको हमेशा अपने परिदृश्य को बेंचमार्क करना चाहिए। मेरे मामले में, आलसी लॉगिंग को किसी भी तर्क की आवश्यकता नहीं थी, लेकिन '__str__' का आह्वान करने पर कक्षा से सामान एकत्र कर सकता था। तो अनिवार्य रूप से, मुझे लगभग एक ही परिणाम मिला। मेरी टिप्पणी देखें [यहां] (https://gist.github.com/schnittstabil/9372911#gistcomment-1910973) – guyarad
@ गुयाराड: आपने खाते में 'lazyjoin' उदाहरण बनाने के लिए आवश्यक समय भी लिया है। [पायथन: आलसी डीबग लॉगिंग कैसे करें] के लिए मेरा जवाब भी देखें (http://stackoverflow.com/questions/21377020/python-how-to-do-lazy-debug-logging/22204021#22204021)। – schnittstabil