7
Desidero che un obiettivo NLog interrompa l'ascolto del registro. Il metodo RemoveTarget non sembra funzionare. Ecco un test negativo.Come annullare la sottoscrizione di un obiettivo NLog
public class when_stopping_to_listen
{
static Logger Logger;
static MemoryTarget target;
Establish context =() =>
{
var config = new LoggingConfiguration();
Logger = LogManager.GetLogger("TestLogger");
target = new MemoryTarget {Layout = "${message}", Name = "TestTarget"};
config.AddTarget(target.Name, target);
config.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, target));
LogManager.Configuration = config;
};
Because of =() =>
{
var config = LogManager.Configuration;
config.RemoveTarget(target.Name);
LogManager.Configuration = config;
Logger.Info("Test");
};
It should_be_empty =() => target.Logs.ShouldBeEmpty();
}
Grazie in anticipo.
Quindi è tutta una questione di regole? – forki23
Sembra così ... Dal codice sorgente di Nlog sembra che una volta inizializzate le regole con le destinazioni non usi più la raccolta 'LogManager.Configuration.ConfiguredNamedTargets'. Ecco perché il 'RemoveTarget' non funziona. – nemesv