2010-10-28 12 views
6

में निर्मित .NET 4.0 विंडोज एप्लिकेशन चलाते समय लॉग 4नेट लॉग नहीं होता है मेरे पास .NET 4.0 विंडोज सर्विस एप्लिकेशन है जो log4net का उपयोग करता है।रिलीज मोड

यहां मेरी log4net कॉन्फ़िगरेशन है।

<log4net> 
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" /> 
    </layout> 
    </appender> 

    <appender name="ColorConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> 
    <mapping> 
     <level value="ERROR" /> 
     <foreColor value="Red, HighIntensity" /> 
    </mapping> 
    <mapping> 
     <level value="FATAL" /> 
     <foreColor value="Red, HighIntensity" /> 
    </mapping> 
    <mapping> 
     <level value="WARN" /> 
     <foreColor value="Blue, HighIntensity" /> 
    </mapping> 
    <mapping> 
     <level value="INFO" /> 
     <forecolor value="White, HighIntensity" /> 
    </mapping> 
    <mapping> 
     <level value="DEBUG" /> 
     <forecolor value="Green, HighIntensity" /> 
    </mapping> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" /> 
    </layout> 
    </appender> 

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <appendToFile value="true" /> 
    <datePattern value="yyyyMMdd" /> 
    <file value="Logs/Server.log" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" /> 
    </layout> 
    <maximumFileSize value="10MB" /> 
    <rollingStyle value="Composite" /> 
    <staticLogFileName value="true" /> 
    </appender> 

    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{Context}] - %message%newline" /> 
    </layout> 
    </appender> 

    <root> 
    <level value="ALL" /> 
    <appender-ref ref="ColorConsoleAppender" /> 
    <appender-ref ref="RollingFileAppender" /> 
    </root> 

</log4net> 

लॉगिंग अपेक्षा के सेवा exe कि डिबग मोड में बनाया गया था का उपयोग करते समय (लॉग फ़ाइलें सही फ़ाइल पथ पर बनाए जाते हैं) शुरू होता है काम करता है, लेकिन जब यह exe बनाया उपयोग कर रहा है काम नहीं करता है रिलीज मोड में।

मैंने इस ब्लॉग पर उल्लिखित चरणों के बाद .NET 4.0 के लिए एक recompiled log4net dll का उपयोग करने का प्रयास किया है .. http://tseonet.blogspot.com/2010/07/making-log4net-run-on-net-40.html

लेकिन, यह भी काम नहीं करता था।

किसी भी मदद की बहुत सराहना की जाती है।

उत्तर

8

मैं आंतरिक डीबग करना चालू करने का सुझाव देते हैं जैसा कि यहां बताया:

log4net - Appenders not working in IIS7.5

+1

आपको बहुत धन्यवाद स्टीफन। इससे मदद मिली। Log4net डीबग संदेशों को देखकर मैं देख सकता था कि रिपॉजिटरी को कॉन्फ़िगर नहीं किया जा रहा था क्योंकि log4net कॉन्फ़िगरेशन नहीं ढूंढ सका। जिस क्रम में असेंबली डीबग और रिलीज मोड में लोड की गई थी, वे अलग थे। यकीन नहीं है कि यह मुद्दा यहाँ था। – Deepu

+3

मैं देख सकता था कि log4net प्रकार [log4net.Repository.Hierarchy.Hierarchy] का उपयोग कर डिफ़ॉल्ट भंडार [log4net-default-repository] बनाता है और फिर कॉन्फ़िगरेशन का उपयोग करके भंडार को कॉन्फ़िगर करने का प्रयास करता है यदि असेंबली विशेषता के साथ सजाया गया था [असेंबली: log4net .Config.XmlConfigurator (देखें = सच)]। रिलीज मोड में बनाए गए एप्लिकेशन के मामले में, log4net को कॉन्फ़िगरेशन नहीं मिला क्योंकि असेंबली लोड की गई इस विशेषता के साथ सजाया नहीं गया था। Assembly विशेषता फ़ाइल में इस विशेषता को जोड़ने से समस्या हल हो गई। – Deepu

4

धन्यवाद Deepu

जोड़ने: assemblyInfo फाइल करने के लिए [विधानसभा log4net.Config.XmlConfigurator (घड़ी = true)] काम किया मेरे लिए

1

मैंने आज भी उसी मुद्दे पर ठोकर खाई और log4net docs के माध्यम से जाने के बाद निम्नलिखित किया और यह मेरे लिए काम किया।

log4net.Config.XmlConfigurator.Configure(); 

सोचा कि यह साझा करने लायक होगा। नीचे लकड़हारा वर्ग जो प्रदाता

/// <summary> 
/// Logger class using log4net library 
/// </summary> 
public class Log4NetLogger : ILogger 
{ 
    public Log4NetLogger(Type configType) 
    { 
     log4net.Config.XmlConfigurator.Configure(); 
     this._logger = LogManager.GetLogger(configType); 
    } 

} 

रूप log4net का उपयोग करता है मेरे लिए विधानसभा विशेषता एक विकल्प के रूप में मैं एक अलग विधानसभा जहां log4net प्रदाताओं में से एक था में कार्यक्षमता प्रवेश करने लिपटे नहीं था।

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