2011-02-22 16 views
7

से मान प्राप्त करना मैंने AppenderSkeleton-class को विस्तारित करके कस्टम लॉग 4नेट एपेंडर लागू किया है। यह उतना आसान था जितना कि कोई भी पूछ सकता था और पूरी तरह से काम करता था।Log4Net कॉन्फ़िगरेशन

मेरी समस्या यह है कि मुझे कुछ मूल्यों को हार्डकोड करना पड़ा और मैं उन्हें अपने कोड से एपेंडर की कॉन्फ़िगरेशन में हटाना चाहता हूं। चूंकि log4net जानता है कि यह कैसे कॉन्फ़िगर किया गया है, मुझे लगता है कि इसके कॉन्फ़िगरेशन के लिए log4net से पूछने का एक तरीका होना चाहिए।

<appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender"> 
     <MyProperty1>property</MyProperty1> 
     <MyProperty2>property</MyProperty2> 
     <MyProperty3>property</MyProperty3> 
</appender> 

कैसे प्राप्त करने के लिए MyProperty1-3 का मूल्य तो मैं इसे अपने appender के अंदर उपयोग कर सकते हैं:

मेरे appender कुछ इस तरह दिखाई सकता है?

अग्रिम धन्यवाद Roalnd

उत्तर

9

यह प्रकार पर थोड़ा निर्भर करता है लेकिन सरल प्रकार के लिए आप निम्न कर सकते हैं:

इस तरह एक संपत्ति को परिभाषित करें:

// the value you assign to the field will be the default value for the property 
private TimeSpan flushInterval = new TimeSpan(0, 5, 0); 

public TimeSpan FlushInterval 
{ 
    get { return this.flushInterval; } 
    set { this.flushInterval = value; } 
} 

यह आपको कर सकते हैं निम्नानुसार कॉन्फ़िगर करें:

<appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender"> 
    <flushInterval value="02:45:10" /> 
</appender> 

यह निश्चित रूप से काम करता है स्ट्रिंग, बूल, int और TimeSpan के लिए एस है।

नोट: यदि आपकी सेटिंग्स को कुछ तर्क सक्रिय करने की आवश्यकता है (उदा। टाइमर बनाएं) तो आप इसे ActivateOptions विधि में कार्यान्वित कर सकते हैं।