Pourquoi dans le monde le test suivant échoue-t-il? (C'est en xunit) Je l'ai essayé avec différents appenders et il n'écrit jamais rien même si le journal semble être prêt à écrire. J'ai finalement créé mon propre appender juste pour le tester.Activer la consignation des fichiers pour log4net à partir du code au lieu de la configuration
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);
}
}
Quelles informations obtenez-vous dans le test? Ou semble-t-il que rien n'est appelé? –
Append n'est jamais appelé - aucune idée pourquoi. La configuration de log4net est encore un peu une boîte noire même après l'avoir utilisée sur plusieurs projets. –