से कोड से log4net के लिए फ़ाइल लॉगिंग सक्षम करें क्यों दुनिया में निम्न परीक्षण विफल रहता है? (यह xunit में) मैंने इसे विभिन्न परिशिष्टों के साथ आजमाया है और यह कुछ भी लिखता नहीं है हालांकि लॉग ऐसा लगता है कि यह लिखने के लिए तैयार है। अंततः मैंने इसका परीक्षण करने के लिए अपना स्वयं का एपेंडर बनाया।कॉन्फ़िगरेशन
public class TestAppender : AppenderSkeleton {
public event Action<LoggingEvent> AppendCalled = delegate { };
protected override void Append(LoggingEvent loggingEvent) {
AppendCalled(loggingEvent);
}
}
public class Class1 {
private TestAppender _appender = new TestAppender();
public Class1() {
log4net.Util.LogLog.InternalDebugging = true;
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
Logger rootLogger = hierarchy.Root;
rootLogger.Level = Level.All;
Logger coreLogger = hierarchy.GetLogger("abc") as Logger;
coreLogger.Level = Level.All;
coreLogger.Parent = rootLogger;
PatternLayout patternLayout = new PatternLayout();
patternLayout.ConversionPattern = "%logger - %message %newline";
patternLayout.ActivateOptions();
_appender.Layout = patternLayout;
_appender.ActivateOptions();
coreLogger.AddAppender(_appender);
}
[Fact]
public void Test() {
bool called = false;
_appender.AppendCalled += e => called = true;
var log = LogManager.GetLogger("abc");
log.Debug("This is a debugging message");
Thread.Sleep(TimeSpan.FromSeconds(2));
log.Info("This is an info message");
Thread.Sleep(TimeSpan.FromSeconds(2));
log.Warn("This is a warning message");
Thread.Sleep(TimeSpan.FromSeconds(2));
log.Error("This is an error message");
Assert.True(called);
}
}
परीक्षण में आपको क्या जानकारी मिलती है? या क्या ऐसा लगता है कि कुछ भी नहीं कहा जाता है? –
परिशिष्ट कभी नहीं कहा जाता है - कोई विचार क्यों नहीं। लॉग 4नेट कॉन्फ़िगरेशन अभी भी कई परियोजनाओं पर इसका उपयोग करने के बाद भी मुझे एक ब्लैक बॉक्स का थोड़ा सा है। –