2009-03-15 11 views
6

कैसे निम्न पंक्ति एक सभा में log4net विन्यस्त करने के लिए काम करता है मैं उत्सुक था:log4net विन्यास [विधानसभा:]

[assembly: log4net.Config.XmlConfigurator(Watch=true)] 

मेरा अनुमान है कि यह कुछ समय कहा जाता हो जाता है से पहले क्रम का आह्वान "मुख्य()" लेकिन यह कब होता है, और क्या प्रभाव हैं? क्या ऐसे अन्य ढांचे/पुस्तकालय हैं जो इस तरह के प्रारंभिक संदर्भ को लोड करने के लिए इस असेंबली विशेषता का उपयोग करते हैं? क्या इस तरह कुछ करने के लिए कोई फायदे/नुकसान हैं, मुख्य() में "कॉन्फ़िगर करें" विधि को कॉल करने के विरोध में?

उत्तर

7

ऐसा करने के फायदे यह हैं कि कोड आपके मुख्य कोड से पहले और स्थिर प्रारंभिकरण से पहले शुरू किया गया है।

इसका मतलब है कि आप एक स्थिर-निर्माता के भीतर लॉग 4नेट लॉगिंग का उपयोग कर सकते हैं। स्थाई कन्स्ट्रक्टर में लॉग 4नेट को पूर्व-प्रारंभ करने के तरीके के बिना, आप निश्चित रूप से कभी नहीं जानते कि कोड सही तरीके से शुरू किया गया है।

यह क्षेत्र बहुत अच्छी तरह से प्रलेखित नहीं है (या फिर भी खोजने में आसान) लेकिन मुझे लगता है कि बुलाए गए तरीकों की शुरुआत विधानसभा-लोड समय पर की जाती है।

+1

यह सुविधा लॉग 4नेट मैनुअल, http://logging.apache.org/log4net/release/manual/configuration.html, "कॉन्फ़िगरेशन विशेषताएँ" अनुभाग में प्रलेखित है। – Designpattern

0

"मेरा अनुमान है कि यह कुछ समय कहा जाता हो जाता है से पहले क्रम का आह्वान" मुख्य() "लेकिन जब करता है होते हैं, और निहितार्थ क्या हैं?"


प्रति log4net documentation के रूप में:

विशेषताओं का उपयोग करना परिभाषित करने जहां आवेदन के विन्यास से लोड किया जाएगा के लिए एक स्पष्ट तरीका हो सकता है। हालांकि यह के लायक है कि विशेषताएँ पूरी तरह से निष्क्रिय हैं। वे केवल जानकारी हैं। इसलिए यदि आप कॉन्फ़िगरेशन विशेषताओं का उपयोग करते हैं तो आपको गुणों को पढ़ने की अनुमति देने के लिए log4net का आह्वान करना होगा।

तो मैं आप अभी भी या तो XmlConfigurator.Configure() विधि या कॉल करनी होगी लगता है।