2011-01-14 13 views
9

मैं log4net का उपयोग कर रहा त्रुटियों लॉग इन करने के बिना।उपयोग log4net web.config

वर्तमान में मैं फ़ाइल log4net.dll डाउनलोड किया है, तो global.asax फ़ाइल में निम्न परिवर्तन किया:

private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

protected void Application_Start(object sender, EventArgs e) 
{ 
    log4net.Config.XmlConfigurator.Configure(); 
} 
protected void Application_Error(object sender, EventArgs e) 
{ 
    Log.Fatal("An uncaught exception occurred", this.Server.GetLastError()); 
} 

भी इन परिवर्तनों web.config फ़ाइल

<log4net> 

<appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 
    <param name="File" value="c:\Log4NetExample.log"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/> 
    </layout> 
</appender> 

<root> 

    <level value="All"/> 

    <appender-ref ref="LogFileAppender"/> 
</root> 

सब कुछ में किए गए थे काम करता है .. लेकिन मुझे जो चाहिए वह web.config से कोड को स्थानांतरित करने और इसके बजाय टेक्स्ट फ़ाइल से पढ़ने के लिए है।

इसके अलावा, मैं डिबग और त्रुटि के 2 स्तरों ..

किसी को भी इस के साथ मेरी मदद कर सकते है?

धन्यवाद

+0

http://geekswithblogs.net/bsherwin/archive/2008/02/15/119657.aspx – kenny

उत्तर

15

अपने AssemblyInfo.cs फ़ाइल में इस विशेषता को रखो:

[assembly:log4net.Config.XmlConfigurator(ConfigFile="Log4Net.config",Watch=true)] 

जहां 'Log4net.config' अपने कॉन्फ़िग फ़ाइल के नाम के समान है।

वहाँ, एक ही प्रभाव को प्राप्त करने के लिए अन्य तरीकों निश्चित रूप से कर रहे हैं। उदाहरण के लिए, आप अपने web.config में कॉन्फ़िगरेशन सेक्शन हैंडलर सेट अप कर सकते हैं। तत्व है, इस प्रकार एक खाली तत्व के साथ अपने स्वयं के xml फ़ाइल में ले जाएँ, और web.config में इसे बदलना:

<log4net configSource="c:\config\myLog4NetConfig.xml" /> 

configSource विशेषता बाहरी फ़ाइल का स्थान की आपूर्ति (नहीं एक यूएनसी पथ, हालांकि हो सकता है , यह मशीन के लिए स्थानीय होने के लिए विन्यस्त करने log4net ... कि एक सुबह थोड़ी सूझबूझ से काम मिल सकता है के रूप में जहाँ तक मिला है।)

।मदद के लिए इन कड़ियों और उदाहरण देखें:

+1

मुझे अपनी log4net कॉन्फ़िगरेशन फ़ाइल अलग करना पसंद है क्योंकि यह आपको असेंबली के पुनः लोड किए बिना मोड को त्वरित रूप से बदलने की अनुमति देता है, जो तब होता है जब आप web.config फ़ाइल को अपडेट करते हैं। –

+1

सुनिश्चित करें कि आपके Log4Net.config की "बिल्ड अगर नई है" की एक बिल्डिंग सेटिंग है। कंसोल परियोजनाओं के लिए विशेष रूप से। –

+0

सापेक्ष पथ के बारे में क्या? क्या मैं उदाहरण के लिए '' लिख सकता हूं? –

1

अगर यह तुम क्या चाहते है मैं नहीं जानता, लेकिन आप वास्तव में उस xml के साथ एक txt फ़ाइल में एक ही log4net एक्सएमएल विन्यास सूचना रख सकते हैं, यह अपने आप को पढ़ा है, और फिर प्रारंभ log4net।

प्रोग्राम रूप एक्सएमएल साथ log4net कॉन्फ़िगर करने के लिए के लिए इतने पर यहाँ this question देखें। उदाहरण में, मैं log4net api के माध्यम से log4net पर सीधे XML भेजने के लिए दिखा रहा हूं। आपके मामले के लिए जो कुछ गुम है वह इसे टेक्स्ट फ़ाइल से पढ़ रहा है। मुझे लगता है कि अगर आपने web.config से अपनी log4net xml कॉन्फ़िगरेशन जानकारी कॉपी की है और उसे एक टेक्स्ट फ़ाइल में चिपकाया है, तो आप इसे फ़ाइल से पढ़ने में सक्षम होना चाहिए और उदाहरण में दिखाए गए लॉग 4नेट पर भेजना चाहिए।

ध्यान दें कि यदि आप सिर्फ web.config से एक अलग फ़ाइल में अपनी लॉग 4नेट लॉगिंग कॉन्फ़िगरेशन चाहते हैं, तो log4net आपको केवल एक अलग फ़ाइल निर्दिष्ट करने की अनुमति देता है जिसमें केवल log4net कॉन्फ़िगरेशन जानकारी होती है (और यह करने के लिए एक और मानक बात होगी उपरोक्त मेरे उदाहरण से)।

कैसे करना है कि ASP.NET अनुप्रयोग के लिए का एक उदाहरण के लिए this question देखें।