2012-03-20 16 views
11

में Ninject.Extensions.Logging.Log4Net को उचित रूप से कॉन्फ़िगर कैसे करें। मैं अपने एमवीसी 3 एप्लिकेशन में लॉग 4नेट लॉगिंग इंजेक्ट करने के लिए निनजेक्ट का उचित उपयोग करने की कोशिश कर रहा हूं। मैं Ninject.MVC3 पैकेज का उपयोग कर रहा हूं, इसलिए मेरे पास NinjectMVC3 क्लास है जो स्वचालित रूप से App_Start विधि को बढ़ाती है और इसमें रजिस्टर सर्विसेज विधि होती है जो सभी निर्भरताओं को बांधती है। मेरे पास Ninject.Extensions.Logging.Log4Net पैकेज भी है, लेकिन मुझे नहीं पता कि इसका उपयोग कैसे किया जाए। मुझे पहले से ही पता है कि my web.config में log4net को कॉन्फ़िगर कैसे करें, लेकिन यह नहीं पता कि DI के लिए इस एक्सटेंशन का उपयोग कैसे करें।मेरी एमवीसी 3 प्रोजेक्ट

मैंने निम्नलिखित सभी लेख/पोस्ट पढ़ लिए हैं, लेकिन उनमें से कोई भी परिभाषित नहीं करता है कि डी लॉगिंग के लिए एक परियोजना को व्यवस्थित तरीके से कैसे सेट किया जाए।

http://dotnetdarren.wordpress.com/2010/07/29/logging-in-mvc-part-4-log4net/ पर, डैरेन एक अच्छा लेख प्रदान करता है, लेकिन डीआई से निपटने के लिए प्रतीत नहीं होता है (कम से कम मैं इसे नहीं देखता)।

Using Ninject to fill Log4Net Dependency पर रेमो ग्लूर यहां बताता है कि एक्सटेंशन को कार्यान्वयन के लिए आवश्यक सभी प्रदान करना चाहिए, लेकिन यह इसे तुरंत चालू करने के तरीके को नहीं दिखाता है।

https://github.com/ninject/ninject.extensions.logging/wiki/Using पर ninject.extensions.logging के लिए प्रलेखन सबसे अच्छा है। मैंने इसे कई बार फिर से पढ़ा है, और अभी भी यह नहीं देखता कि निनजेक्टएमवीसी 3 कक्षा में इंजेक्शन को बांधने के लिए, या उदाहरण के लिए मेरे नियंत्रक वर्ग से लॉगर को कॉल करने के ठोस उदाहरणों का उपयोग कैसे करें।

सबसे होनहार लेख में Moosaka Ninject.Extensions.Logging.Log4net unexpected behavior पर कुछ महान कोड प्रदान करता है, लेकिन जब मैं यह कोशिश, मैं कहा "संरक्षित निर्माता 'लॉगर' यहाँ तक नहीं पहुंच पा" ILogger logger = new Logger(type); पर LoggerFactory में एक संकलन त्रुटि मिलती है। इसके अलावा, वह "इस पूरी गड़बड़ी को एक अलग वर्ग पुस्तकालय में दूर करने" कहता है। क्या इसका मतलब पूरी तरह से अलग परियोजना के रूप में है?

मैं बस सभी अलग-अलग विकल्पों और दिनांकित पोस्ट में खो रहा हूं और मेरी एमवीसी 3 परियोजना में निनजेक्ट और लॉग 4नेट के साथ निर्भरता इंजेक्शन का उपयोग करने के तरीके पर कोई इनपुट चाहूंगा। साथ ही, यदि यह मायने रखता है, तो मेरा निनजा कोड मेरे डोमेन प्रोजेक्ट में है, लेकिन डोमेन और वेब प्रोजेक्ट (और मेरे यूनिट परीक्षणों में मजाक) दोनों से लॉगिंग की ज़रूरत है। किसी भी मदद की सराहना की है।

उत्तर

9

आपको सामान्य log4net कॉन्फ़िगरेशन को छोड़कर कुछ भी कॉन्फ़िगर नहीं करना चाहिए।

आपको बस इतना करना है कि जहां भी आप लॉग इन करना चाहते हैं वहां एक इलोगर इंजेक्ट करना है। https://github.com/ninject/ninject.extensions.logging/wiki/Using

+1

धन्यवाद रेमो। मुझे एहसास नहीं हुआ कि लॉगर इंजेक्ट करने के लिए इसे किसी भी अतिरिक्त कोड की आवश्यकता नहीं थी। क्या मुझे अभी भी 'log4net.Config.XmlConfigurator.Configure(); 'my global.asax.cs फ़ाइल में कॉल करने की आवश्यकता है? भले ही, मैं निंजा 3.0.0 के अपग्रेड में मुद्दों पर चल रहा हूं जो कि आवश्यक प्रतीत होता है। मैंने आपके पृष्ठ पर एक समस्या http://www.planetgeek.ch/2011/12/30/new-features-and-changes-of-ninject-3-0/comment-page-1/#comment-2120 पर पोस्ट की है । यदि आप इसका जवाब दे सकते हैं, तो मैं इसकी सराहना करता हूं! – bigmac

+5

लॉगिंग काम करता है। धन्यवाद एक टन रेमो! दूसरों के लिए, आपको अभी भी global.asax.cs में कॉन्फ़िगर विधि को कॉल करना होगा, लेकिन कोई अन्य कोड आवश्यक नहीं है। हालांकि, इस बात से अवगत रहें कि आपको निनजेक्ट 3.0.0 में अपग्रेड करना होगा और इससे अन्य पक्ष प्रभाव (जैसे मैंने किया) को Ninject.Extensions.Conventions जैसी चीजों के कारण हो सकता है। – bigmac