2009-07-18 15 views

उत्तर

28

suggested MrPeregrination द्वारा के रूप में आप एक वर्ग XmlLayoutBase से पाने लिखने के लिए की जरूरत है, FormatXml विधि ओवरराइड और लेआउट के रूप में उपयोग करने के लिए अपने appender हिदायत:

:

class Program 
{ 
    static void Main(string[] args) 
    { 
     XmlConfigurator.Configure(); 
     ILog log = log4net.LogManager.GetLogger(typeof(Program)); 
     log.Debug("Hello world"); 
    } 
} 

public class MyXmlLayout : XmlLayoutBase 
{ 
    protected override void FormatXml(XmlWriter writer, LoggingEvent loggingEvent) 
    { 
     writer.WriteStartElement("LogEntry"); 
     writer.WriteStartElement("Message"); 
     writer.WriteString(loggingEvent.RenderedMessage); 
     writer.WriteEndElement(); 
     writer.WriteEndElement(); 
    } 
} 

और app.config में रखते

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 
    </configSections> 

    <log4net> 
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" > 
     <param name="File" value="log.txt" /> 
     <param name="AppendToFile" value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="10MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="MyNamespace.MyXmlLayout" /> 
    </appender> 

    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="LogFileAppender" /> 
    </root> 
    </log4net> 
</configuration> 

यह आपके लॉग फाइल में इस तरह प्रविष्टियों का उत्पादन करेगा:

<LogEntry><Message>Hello world</Message></LogEntry> 
+0

डारिन, आखिरकार आप इसके निचले हिस्से तक पहुंच रहे हैं, लेकिन क्या आप कृपया मुझे बता सकते हैं, क्या मुझे अपनी कस्टम लाइब्रेरी में अपनी कस्टम लाइब्रेरी, मेरे एप्लिकेशन क्लास लाइब्रेरी में, या लॉग 4नेट क्लास लाइब्रेरी में (रीकंपलाइल))? –

+0

आप इस कक्षा को अपनी कक्षा पुस्तकालय में या अपनी आवेदन कक्षा पुस्तकालय में प्राप्त कर सकते हैं। यदि आपके पास अपनी कक्षा पुस्तकालय में है, तो आपको उस असेंबली का नाम निर्दिष्ट करना होगा जिसमें यह शामिल है: <लेआउट टाइप = "MyNamespace.MyXmlLayout, MyCustomLog4NetExtensions" /> –

+0

डारिन क्या आप अभी भी इस प्रश्न की निगरानी कर रहे हैं? –

3

XmlLayoutBase क्लास देखें। मुझे लगता है कि शायद आपको क्या चाहिए। एक FormatXML फ़ंक्शन है जिसे आपको XmlWriter को सही रूप से स्वरूपित डेटा के साथ आपूर्ति करने के लिए ओवरराइड करने की आवश्यकता होगी।

+0

क्या मेरे पास थोड़ा और विस्तार हो सकता है? –

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