के लिए प्रदर्शन ट्रिक्स मैं सी # लॉगिंग में देख रहा हूं और मैं नहीं चाहता कि संदेश लॉगिंग थ्रेसहोल्ड से नीचे है तो मेरे लॉग संदेश किसी भी समय प्रसंस्करण करने के लिए खर्च करें। लॉग पैरामीटर का मूल्यांकन करने के बाद लॉग 4नेट सबसे अच्छा मैं थ्रेसहोल्ड चेक देख सकता हूं।सी # लॉगिंग
उदाहरण:
_logger.Debug("My complicated log message " + thisFunctionTakesALongTime() + " will take a long time")
यहां तक कि अगर सीमा डीबग से ऊपर है, thisFunctionTakesALongTime अभी भी मूल्यांकन किया जाएगा।
log4net में आप _logger.isDebugEnabled उपयोग करें ताकि आप के साथ
if(_logger.isDebugEnabled)
_logger.Debug("Much faster")
मैं अगर वहाँ .net प्रवेश के लिए एक बेहतर समाधान है कि एक जांच हर बार मैं चाहता हूँ को शामिल नहीं करता है जानना चाहता हूँ अंत अपेक्षा की जाती है दर्ज करना।
C++ में मैं अपने LOG_DEBUG मैक्रो लॉग स्तर ही जाँच करता है के बाद से
LOG_DEBUG("My complicated log message " + thisFunctionTakesALongTime() + " will take no time")
करने की अनुमति दी है। यह मुझे अपने ऐप में एक 1 लाइन लॉग संदेश रखने के लिए स्वतंत्र करता है जिसे मैं बहुत पसंद करता हूं। किसी को इस व्यवहार को सी # में दोहराने का तरीका पता है?
लेकिन अगर मैं लॉग संदेश प्राप्त करने के लिए कार्यों का मूल्यांकन कर रहा हूं, तो क्या यह धीमा नहीं होगा? यदि लॉग स्तर मेरी दहलीज से नीचे है तो मैं सभी फ़ंक्शन मूल्यांकन से बचना चाहता हूं। – Charles
आप सही हैं कि आपको फ़ंक्शन मूल्यांकन में देरी करने की आवश्यकता होगी।मेरा अद्यतन देखें जो एक अज्ञात प्रतिनिधि का उपयोग करता है। –
डी ओह, यह मेरा जवाब भी था। मुझे आपको चेतावनी दी जानी चाहिए कि यदि आप गति की तलाश में हैं, तो आप प्रतिनिधियों का उपयोग नहीं करना चाहते हैं। आपको केवल हिट लेना चाहिए और अगर किसी भी कीमत के आसपास 'if (logger.isDebugEnabled)' का उपयोग करना चाहिए। कोई समाधान नहीं है जो प्रदर्शन और सुरुचिपूर्ण दोनों है। – bobbymcr