काम नहीं कर रहा है मैं अपने ऐप में लॉग इन करने के लिए log4net का उपयोग कर रहा हूं। मेरा FileAppender ठीक काम कर रहा है, लेकिन मुझे MemoryAppender के साथ समस्याएं आ रही हैं।log4net MemoryAppender
यहां मेरी कॉन्फ़िगरेशन फ़ाइल है।
<?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.FileAppender">
<param name="File" value="Envision.log" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="" />
<param name="Footer" value="" />
<param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
</layout>
</appender>
<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender">
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="MemoryAppender" />
</root>
</log4net>
</configuration>
मैं कॉन्फ़िगरेशन फ़ाइल सेट अप करने के लिए इस कोड का उपयोग करता हूं।
FileInfo file = new FileInfo(configPath);
log4net.Config.XmlConfigurator.Configure(file);
file = null;
जैसा कि मैंने कहा, फ़ाइल एपेंडर महान काम करता है। लेकिन मुझे कोई घटना नहीं मिल रही है। मैंने मेमोरी ऐपेंडर प्राप्त करने के लिए ऐसा कुछ करने का प्रयास किया है।
Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
MemoryAppender mappender = hierarchy.Root.GetAppender("MemoryAppender") as MemoryAppender;
मैं का उपयोग कर की कोशिश की है:
var events = mappender.GetEvents()
कुछ प्रवेश करने के बाद, और घटनाओं हमेशा खाली है। मैंने कॉन्फ़िगरेशन फ़ाइल का उपयोग करने के बजाय फ़ाइल में FileAppender और MemoryAppender को सेट करने का प्रयास किया है, और मुझे वही मिलता है, FileAppender ठीक काम करता है, लेकिन मेमोरीएपेंडर से कोई भी ईवेंट नहीं मिल रहा है। उत्सुक अगर मैं MemoryAppender सही समझ रहा हूँ? मैंने एक थ्रेड स्थापित करने का भी प्रयास किया जो GetEvents को रिक्त नहीं होने के लिए जांच करता है, और लॉगिंग करते समय यह हमेशा खाली आता है। मैंने थ्रेसहोल्ड को Core.Level पर सेट करने का प्रयास किया है। मेमोरी ऐपेंडर पर सभी ने कुछ भी नहीं बदला है।
किसी भी दिशा के लिए धन्यवाद। मैंने चारों ओर देखा है, और मैंने देखी गई साइटों से, मैं यह नहीं बता सकता कि मैं अलग क्या कर रहा हूं।
यहां तक कि कुछ भी सरल काम नहीं करता है। घटनाओं की लंबाई हमेशा शून्य होती है;
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
MemoryAppender appender = new MemoryAppender();
ILog logger = LogManager.GetLogger("foo");
BasicConfigurator.Configure(appender);
logger.Error("Should work");
var events = appender.GetEvents();
}
}
शानदार, धन्यवाद!मैं बस यूनिट परीक्षणों के लिए लॉग लाइनों (मेरे प्रोजेक्ट में मॉकिंग फ्रेमवर्क जोड़ने के बिना) को कैप्चर करना चाहता था, इसलिए मैंने आपका कोड अनुकूलित किया – CZahrobsky