2012-07-09 16 views
6

एनएलओजी में एक फ़ाइल लक्ष्य वस्तु में एक संपत्ति (बूल) है जिसे "keepFileOpen" कहा जाता है। डिफ़ॉल्ट रूप से यह गुण झूठी पर सेट है, जिसका अर्थ है कि प्रत्येक लॉग इवेंट फ़ाइल खोल देगा, फ़ाइल में लिखें और फ़ाइल बंद करें।एनएलओजी फ़ाइल लक्ष्य और रखरफाइल ओपन ध्वज

प्रदर्शन में हिट बड़ी है, इसलिए मैंने गलत रखने के बजाय "keepFileOpen" को सही पर निर्दिष्ट किया, जिसका अर्थ है कि फ़ाइल केवल एक बार खोली जाएगी।

क्या किसी के पास कोई विचार है (या सिर्फ यह पता है) क्यों यह संपत्ति डिफ़ॉल्ट रूप से "झूठी" पर सेट की जाती है, जिससे लॉगिंग पर एक बड़ा प्रदर्शन मारा जाता है?

क्या कोई परिदृश्य है जहां इस संपत्ति को सत्य में सेट करना समस्याएं पैदा कर सकता है (जो इसे डिफ़ॉल्ट रूप से "गलत" करने के लिए समझ में आता है)।

धन्यवाद!

मूल लेआउट के लिए संपादित करें

प्रदर्शन माप, लकड़हारा करने के लिए 100K घटनाओं लेखन:

  • keepFileOpen = false (डिफ़ॉल्ट): ~ 101 सेकंड
  • keepFileOpen = true: ~ 1 सेकंड

उत्तर

0

मैं उन्हें एक ईमेल भेजने और उनसे पूछने की कोशिश करता हूं। मैं किसी भी कारण का पता नहीं लगा सकता कि यह विकल्प डिफ़ॉल्ट रूप से गलत क्यों है।

5

मैं कहूंगा कि फाइल को बंद करना अपेक्षित व्यवहार है। यदि आप किसी अन्य प्रक्रिया से फ़ाइल तक पहुंचने का प्रयास करेंगे या एनएलओजी-प्रक्रिया जीवित होने पर फ़ाइल सिस्टम में इसे हटाएंगे, तो यह उन परेशान सिस्टम-त्रुटियों का कारण बन जाएगा जो कहेंगे कि कुछ प्रक्रिया फाइल आदि रखती है।

यदि समय फ़ाइल खोलना आपके लिए बहुत लंबा है, AsyncWrapper का उपयोग करने का प्रयास करें और आपको आग-और-भूल-व्यवहार मिलेगा।

इसलिए मुझे लगता है कि डिफ़ॉल्ट मान ठीक है।

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