2014-06-11 4 views
7

मुझे कुछ कोड विरासत में मिला है जो रूट के तहत प्राथमिकता तत्व का उपयोग अपने xml configuraiton में करता है।Log4Net XML कॉन्फ़िगरेशन में प्राथमिकता स्तर के समान ही है?

<root> 
<priority value="ALL" /> 
<appender-ref ref="LogFileAppender" /> 
<appender-ref ref="ConsoleAppender"/> 
</root> 

हालांकि, http://logging.apache.org/log4net/release/manual/configuration.html पर log4net विन्यास उदाहरण हमेशा यह स्तर तत्व का उपयोग दिखाने: यह सिर्फ http://iserialized.com/log4net-for-noobs/ पर उदाहरण है जो दिखाता है की तरह है

<root> 
<level value="DEBUG" /> 
<appender-ref ref="A1" /> 
</root> 

विन्यास के इस प्रकार में

है
<priority> 

<level> 

?

क्या कोई मुझे दस्तावेज़ों में कहीं कहीं इंगित कर सकता है जहां यह समझाया गया है?

उत्तर

17

लॉग 4net में Logger कक्षा पर Priority संपत्ति नहीं है। Priority का एकमात्र उदाहरण मैं SmtpAppender में पाया था। तो कोड में मैं चला गया!

XmlHierarchyConfigurator आप निम्नलिखित कोड मिल जाएगा ParseChildrenOfLoggerElement विधि में:

if (xmlElement.LocalName == "level" || xmlElement.LocalName == "priority") 
{ 
    this.ParseLevel(xmlElement, log, isRoot); 
} 

आह! दोनों मान एक ही संपत्ति के लिए हल किए जाते हैं (ParseLevel विधि वास्तव में बहुत कुछ नहीं करती है, "विरासत" मान के असाइनमेंट, लॉगिंग और प्रबंधन के अलावा जो संभव स्तर है) तो वहां आपके पास है; "स्तर" और "प्राथमिकता" आपके कॉन्फ़िगरेशन पर सटीक समान प्रभाव डालता है। मैं इस पुस्तकालय के पिछले संस्करण है, जो this article about log4j द्वारा समर्थित वास्तव में साथ पश्चगामी संगतता के कुछ प्रकार के रखने के लिए किया गया था अनुमान:

log4j के प्रारंभिक संस्करणों में, इन श्रेणी और प्राथमिकता, कहा जाता था, लेकिन अब उन्हें क्रमशः लॉगर और स्तर कहा जाता है।

// ... 
XmlElement xmlElement = (XmlElement)xmlNode; 
if (xmlElement.LocalName == "logger") 
{ 
    this.ParseLogger(xmlElement); 
} 
else 
{ 
    if (xmlElement.LocalName == "category") 
    { 
     this.ParseLogger(xmlElement); 
    } 
    else 
    { 
     if (xmlElement.LocalName == "root") 
     { 
      this.ParseRoot(xmlElement); 
     } 
    // ... 

तो हो गया: के रूप में लकड़हारा हैं स्तर और प्राथमिकता, परस्पर विनिमय कर रहे

वास्तव में, अगर हम "श्रेणी" के लिए खोज, वहाँ XmlHierarchyConfigurator जो निम्नलिखित कोड शामिल में एक Configure विधि है और श्रेणी।

दिलचस्प tidbit: पिछले संपत्ति जीतता है, और कोई गुण आप लकड़हारा पर हो सकता था की संख्या के बारे में सीमा नहीं है, तो यह वैध है और स्तर

<root> 
<priority value="ALL" /> 
<priority value="ERROR" /> 
<level value="DEBUG" /> 
</root> 
+1

वाह डिबग करने के लिए स्थापित करेगा। धन्यवाद। और, आपका "दिलचस्प टिड्बिट" मेरे अगले रहस्य को बताता है। मेरी विरासत में से एक कॉन्फ़िगरेशन फ़ाइलों में से एक रूट के तहत दो प्राथमिक तत्व थे। मैंने माना "अंतिम संपत्ति जीत" और परीक्षण मान्य है, लेकिन अंतर्दृष्टि के लिए धन्यवाद। –

+0

आपका स्वागत है, यह विश्लेषण का एक दिलचस्प हिस्सा था और मेरे पास पहले से ही इस उत्तर से कॉन्फ़िगरेशन पार्सिंग के बारे में कुछ पॉइंटर्स थे: http://stackoverflow.com/questions/23634472/using-ioc-in-a-custom-log4net -appender/23649446 # 23649446 – samy

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