2012-02-10 12 views
9

मैं ऑर्चर्ड सीएमएस के साथ काम कर रहा हूं और यह मेरे लिए बेहतर सीएमएस है। मैं समझना चाहता हूं कि यह लॉगिंग कैसे करता है और क्या मैं अपना खुद का लॉगिंग जोड़ सकता हूं या नहीं। मैंने देखा कि ऑर्चर्ड NullLogger कक्षा का उपयोग करता है और यह कोई काम नहीं करता है। मैंने App_Data.Logs फ़ोल्डर खोला है और देखा है कि लॉग फ़ाइलें हैं। पर कैसे? मैंने कोड में खोज की है कि यह चाल है जो NullLogger को log4net के साथ बदलती है (मुझे लगता है कि यह log4net है, क्योंकि log4net.config के लिए लॉग प्रारूप और स्वरूपण बहुत समान हैं) लेकिन मुझे यह नहीं मिला है। क्या कोई मुझे जवाब दे सकता है:कैसे ऑर्चर्ड सीएमएस लॉगिंग करता है?

  1. ऑर्चर्ड लॉगिंग कैसे करता है?
  2. चाहे मैं अपना खुद का लॉगर जोड़ूं और यदि हां यह करने के लिए सर्वोत्तम प्रथाएं मौजूद हैं?

धन्यवाद, एंड्री।

उत्तर

16

एक ऑटोफैक मॉड्यूल (Orchard.Logging.LoggerModule सटीक होने के लिए) इसे संभालता है। असल में - यह प्रत्येक निर्भरता को स्कैन करता है और उचित लॉगर इंस्टेंस के संदर्भ के साथ ILogger के सभी गुणों को भरता है। प्रत्येक निर्भरता के साथ अपना स्वयं का लॉगर प्राप्त होता है जिसमें एक समृद्ध वर्ग के पूर्ण प्रकार के नाम (नामस्थान सहित) के बराबर नाम होता है।

NullLogger सिर्फ प्लेसहोल्डर है इसलिए संपत्ति का उपयोग NullReferenceException एस को ऑटोफैक द्वारा निर्धारित किए जाने से पहले फेंक नहीं देगा।

  • ILoggerFactory (बस डिफ़ॉल्ट Orchard.Logging.CastleLoggerFactory की तरह) के एक कस्टम कार्यान्वयन बना सकते हैं और
  • :

    एक नहीं बल्कि जटिल काम यह तीन बातें कर शामिल होगा के रूप में डिफ़ॉल्ट प्रवेश प्रदान कर रहा है एक ऑटोफैक मॉड्यूल बनाता है जो कि कंटेनर में कार्यान्वित करता है (जैसे LoggerModule करता है)

  • वर्तमान डिफ़ॉल्ट एल को दबाएं साथ [OrchardSuppressDependency("Orchard.Logging.LoggingModule")]

अद्यतन अपने नए एक सजा से मॉड्यूल ogging

बस महसूस किया कि मैं सवाल यहाँ का सबसे महत्वपूर्ण हिस्सा नहीं दिया :) हाँ, ऑर्चर्ड log4net तो आप का उपयोग करता है कॉन्फ़िगर/log4net.config फ़ाइल के माध्यम से डिफ़ॉल्ट सेटिंग्स को बदल सकता है।

+0

बहुत बहुत धन्यवाद, यह मेरे लिए उपयोगी है। लेकिन मुझे अभी तक समझ में नहीं आता है कि ऑर्चर्ड के किस स्थान पर वर्तमान में इस्तेमाल किया गया लॉगर कॉन्फ़िगर किया गया है। यह log4net.config फ़ाइल में है या कहीं और? –

+0

ठीक है, मुझे जवाब मिल गया है। यह वास्तव में log4net.config फ़ाइलों का उपयोग करता है। धन्यवाद। –

+0

क्या कोई तरीका है कि मैं एक विशेष नेमस्पेस के लिए सभी लॉगिंग को संभालने के लिए लॉगर बना सकता हूं? या यह कक्षा के लिए विशिष्ट है? –

1

ऑर्चर्ड लॉगिंग कैसे काम करता है इस पर एक शानदार लेख है। (मुझे यकीन नहीं है कि पूरे लेख की प्रतिलिपि बनाना और पेस्ट करना ठीक है)। Injection Logger in Orchard

तो चाल यह है::

जब भी कोई वर्ग एक लॉगर उदाहरण होते हैं, जिसे यह करने की जरूरत है करने के लिए एक ILogger संपत्ति की घोषणा है, बस इतना ही यह कड़ी है। और बाद में, अपनी कक्षा में, आप इस संपत्ति कभी भी

और यह कैसे किया जाता है पर लॉग इन करना करने के लिए उपयोग कर सकते हैं?

ऑर्चर्ड वेब एप्लिकेशन स्टार्टअप के दौरान, ऑर्चर्डस्टार का उपयोग अधिकांश पंजीकरण कार्य करने के लिए का उपयोग किया जाएगा।

में कुछ शब्दों में, यह, सभी परियोजनाओं में सभी कोड लग रहा है सभी वर्गों है कि एक ILogger संपत्ति का उपयोग हो जाता है, और आप के लिए यह लागू करता है (यदि लागू नहीं किया), महल के लकड़हारा कारखाने का उपयोग कर।

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