मुझे log4net xml आउटपुट पर पूर्ण नियंत्रण चाहिए।लॉग 4नेट xml आउटपुट
आउटपुट टेम्पलेट को कस्टमाइज़ करना कैसा है?
मुझे log4net xml आउटपुट पर पूर्ण नियंत्रण चाहिए।लॉग 4नेट xml आउटपुट
आउटपुट टेम्पलेट को कस्टमाइज़ करना कैसा है?
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>
XmlLayoutBase क्लास देखें। मुझे लगता है कि शायद आपको क्या चाहिए। एक FormatXML फ़ंक्शन है जिसे आपको XmlWriter को सही रूप से स्वरूपित डेटा के साथ आपूर्ति करने के लिए ओवरराइड करने की आवश्यकता होगी।
क्या मेरे पास थोड़ा और विस्तार हो सकता है? –
डारिन, आखिरकार आप इसके निचले हिस्से तक पहुंच रहे हैं, लेकिन क्या आप कृपया मुझे बता सकते हैं, क्या मुझे अपनी कस्टम लाइब्रेरी में अपनी कस्टम लाइब्रेरी, मेरे एप्लिकेशन क्लास लाइब्रेरी में, या लॉग 4नेट क्लास लाइब्रेरी में (रीकंपलाइल))? –
आप इस कक्षा को अपनी कक्षा पुस्तकालय में या अपनी आवेदन कक्षा पुस्तकालय में प्राप्त कर सकते हैं। यदि आपके पास अपनी कक्षा पुस्तकालय में है, तो आपको उस असेंबली का नाम निर्दिष्ट करना होगा जिसमें यह शामिल है: <लेआउट टाइप = "MyNamespace.MyXmlLayout, MyCustomLog4NetExtensions" /> –
डारिन क्या आप अभी भी इस प्रश्न की निगरानी कर रहे हैं? –