2009-03-24 12 views
13

लॉगिंग बंद कर देता है ऐसा लगता है कि Log4Net चुपचाप उन कारणों से बंद हो जाता है जो स्पष्ट नहीं हैं, और मुझे नुकसान हो रहा है कि इसे कैसे समस्या निवारण किया जाए। मेरा झुकाव यह है कि एक विशेष ऐपेंडर एक विशिष्ट लॉग संदेश पर असफल रहा है और ऐसा लगता है कि पूरे ढेर को बंद कर दिया गया है।लॉग इननेट की समस्या निवारण कैसे करता है जब यह

क्या सेवा के धीमे बंद होने की बजाय लॉग 4नेट को अपवाद (कम से कम हमारे डीबग चरण के दौरान) फेंकने का कोई तरीका है।

उत्तर

13

मुझे लगता है कि वहाँ एक config मूल्य आप अपने app.config/web.config की appSettings अनुभाग में डाल सकते हैं log4net में आंतरिक डिबग बयान पर कर सकते हैं:

<appSettings> 
    <add key="log4net.Internal.Debug" value="true"/> 
</appSettings> 

यह आप किसी भी में कुछ अंतर्दृष्टि दे देंगे त्रुटियों कि log4net निगल जा सकता है।

+5

थोड़ा और खुदाई करने के बाद (आंतरिक डिबगिंग को सक्षम करने के लिए आपके सूचक के बाद यह सिस्टम के लिए श्रोता सक्षम करने जैसा दिखता है। डायग्नोस्टिक्स। ट्रेस भी आवश्यक है। –

+3

यह भी ध्यान दिया जाना चाहिए कि ऐप सेटिंग्स को सिस्टम से पहले जाना होगा।निदान विशेषता। – Dan

22

पिछले जवाब पर विस्तार -

log4net.Internal.Debug का पता लगाने के लिए एक निशान श्रोता जोड़ने के लिए, अपने अनुप्रयोग config से जोड़ें:

<system.diagnostics> 
    <trace autoflush="true"> 
     <listeners> 
     <add 
      name="textWriterTraceListener" 
      type="System.Diagnostics.TextWriterTraceListener" 
      initializeData="c:\temp\log4net.txt" /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 

initializeData साथ ऊपर विशेषता मान बदलें अपनी वांछित लॉग फ़ाइल पथ। सुनिश्चित करें कि एप्लिकेशन या ASP.NET सर्वर प्रक्रिया को इस फ़ाइल को लिखने की अनुमति है।

एक और चीज जो आप कर सकते हैं उन संदेशों का निरीक्षण करें जो स्टार्टअप पर log4net कॉन्फ़िगरेशन से लौटाए गए हैं। Log4net संस्करण 1.2.11 के रूप में, XmlConfigurator.Configure() विधियां कॉन्फ़िगरेशन प्रक्रिया के दौरान सामना की गई स्ट्रिंग्स लिस्टिंग समस्याओं वाले एक आईसीलेक्शन को वापस करती हैं।

तो तुम कुछ इस तरह मिल गया है, तो:

XmlConfigurator.Configure(); 

ICollection configMessages = XmlConfigurator.Configure(); 

करने के लिए परिवर्तन यह और एक डिबगर में configMessages का निरीक्षण किया, या कहीं उन्हें प्रिंट, उदा

foreach (string msg in configMessages) 
{ 
    Console.WriteLine(msg); 
} 

तो बाकी सब विफल रहता है, log4net स्रोत डाउनलोड करें, अपने समाधान के लिए परियोजना जोड़ने के लिए, और इस परियोजना को संदर्भित log4net.dll के बजाय। अब आप डीबगर में लॉग 4नेट कॉल में कदम उठा सकते हैं।

0

मुझे एक कठिन समय लग रहा था कि फाइल लॉग और एसक्यूएल लॉग एपेंडर क्यों काम नहीं कर रहे थे। मैंने डिफ़ॉल्ट SQL तालिका बदल दी है और यह पता चला है कि डेटा प्रकार Int कोई अच्छा नहीं था और Int32 सही मान था। मुझे यह जानकारी तब तक नहीं मिल सका जब तक कि मैं विजुअल स्टूडियो में डिबगिंग नहीं कर रहा था और लॉगिंग विधि में कदम रखा था। विधि का निष्पादन मेरी ब्रेकप्वाइंट पर रोक दिया गया और मैं तत्काल विंडो में सेटअप आदेश भागा:

log4net.Config.XmlConfigurator.Configure()

मैं तत्काल प्रतिक्रिया देखने के लिए सक्षम था और वहाँ में तथ्य था एक कॉन्फ़िगरेशन कोड चला गया जब एक अपवाद फेंक दिया। यह तत्काल विंडो में प्रदर्शित हुआ और मैं इस मुद्दे को हल करने में सक्षम था।

उम्मीद है कि यह किसी की मदद करता है।

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