से चलाते समय लॉग 4नेट कॉन्फ़िगरेशन फ़ाइल नहीं ढूंढ सकता है। हम .NET 4.0 के तहत चल रहे हमारी व्यावसायिक परत के लिए इकाई परीक्षण लिख रहे हैं। व्यापार परत एक सीधी सी # कक्षा पुस्तकालय है जो आमतौर पर एसओएपी और आरईएसटी वेब सेवाओं के भीतर चलती है। लॉगिंग के लिए हमारा एप्लिकेशन एक अलग रैपर असेंबली के भीतर log4net का उपयोग करता है। लॉगिंग असेंबली में सी # कोड में एक असेंबली जानकारी निर्देश है जो लॉग 4नेट को कॉन्फ़िगरेशन फ़ाइल का नाम बताता है, एक ला -विजुअल स्टूडियो/माइक्रोसॉफ्ट टेस्ट फ्रेमवर्क
[असेंबली: log4net.Config.XmlConfigurator (ConfigFile = "AcmeLogging.config", Watch = true) ]
रैपर के माध्यम से log4net प्रारंभ करना वेब सेवाओं में ठीक काम करता है। जब हम इसे हमारी यूनिट टेस्ट असेंबली से प्रारंभ करते हैं तो यह कॉन्फ़िगरेशन फ़ाइल नहीं दिखता है। Configuratino फ़ाइल निष्पादन निर्देशिका में प्रतिलिपि बनाने के गुणों के माध्यम से कॉन्फ़िगर किया गया है, और हम इसे bin \ debug निर्देशिका में देखते हैं। एक ही फ़ोल्डर में से चल रहे लॉगिंग असेंबली का उपयोग कर एक त्वरित कंसोल परीक्षण प्रोग्राम ठीक काम करता है। उत्सुक बात यह है कि व्यवहार की समस्याएं अस्थायी हैं, और अलग-अलग डेवलपर्स मशीनों पर अलग-अलग समय पर पॉप अप होती हैं और किसी भी निर्धारिक तरीके से ठीक नहीं हो सकती हैं।
आवरण विधानसभा कोड के माध्यम से कदम, log4netLogManager.GetLogger() कॉल सही ढंग से वापस जाने के लिए प्रकट होता है, लेकिन() log.Logger.Repository.GetAppenders द्वारा दिया appenders की सूची खाली है। चूंकि यह गलत व्यवहार समान है कि फ़ाइल Bin \ Debug फ़ोल्डर में है या नहीं, हम मानते हैं कि यह फ़ाइल नहीं देख रहा है।
माइक्रोसॉफ्ट टेस्ट फ्रेमवर्क में लॉग 4नेट चलाने के बारे में जो कुछ भी हम खो रहे हैं उसके बारे में कोई संकेत बहुत सराहना की जाएगी।
यह _exactly_ हमें क्या चाहिए था, इससे पूरी टीम बहुत खुश होगी। आपका बहुत बहुत धन्यवाद। मैं इस उत्तर के लिए मतदान करना चाहता हूं, लेकिन ऐसा करने के लिए पर्याप्त SO गतिविधि नहीं है - लेकिन भविष्य के पाठकों को इस उत्तर के लिए इसे एक अतिरिक्त वोट माना जाना चाहिए। –