Changement de log4net niveau d'enregistrement par programmation

Ceci est similaire à Six cent cinquante mille six cent quatre vingt quatorze mais aucune réponse n'a été accepté là, je ne peux pas obtenir un de ces suggestions de travail à tous, et je pense que je peut être dans une situation légèrement différente.

Je vais appeler log4net.Config.XmlConfigurator.Configurer(). Mais après ce point dans le programme, je veux changer la journalisation de seuil à une valeur connue seulement au moment de l'exécution.

De l'autre question, j'ai essayé:

((log4net.Repository.Hierarchy.Logger)mylogger.Logger).Level = log4net.Core.Level.Error;

et:

var appender = new log4net.Appender.ColoredConsoleAppender();
appender.Layout = new log4net.Layout.PatternLayout(@"%date %-5level %message%newline");
appender.Threshold = log4net.Core.Level.Error;
appender.ActivateOptions();
log4net.Config.BasicConfigurator.Configure(appender);

mais aucun des deux ne semble avoir aucun effet: je suis toujours de voir le DÉBOGAGE et l'INFO traces sur la console.

Mon intuition est que je suis l'ajout d'un nouveau appender, qui n'a pas d'effet sur l'appender déclaré dans le fichier XML de config (qui raconte l'impression niveau de DEBUG messages), mais je n'ai pas de preuves de cela encore.

J'ai été fouiller dans les log4net API pour un certain temps maintenant, et je ne suis pas le voir. Est-il quelque chose de simple, je suis absent?

  • La fixation d'un Enregistreur de niveau "Erreur" éviter toute debug ou info sortie de l'enregistreur d'être connecté. Vous voyez le DÉBOGAGE et l'INFO pour le très Enregistreur dont le niveau de journalisation vous êtes en train de changer?
  • C'est un bon point: #1 probablement seulement définit le seuil d'un bûcheron. Mais #2 semble comme il se doit d'être globale.
  • Oui #1, seul le seuil de l'unique journal instance vous sont en train de changer, en plus de tout Enregistreur de niveau inférieur dans la hiérarchie qui n'a pas de définir explicitement niveau.
  • J'ai essayé de parcourir l'ensemble de log4net.LogManager.GetCurrentLoggers() avec le n ° 1, et qui ne fait rien non plus. Et je pense toujours que #2 semble comme il se doit d'être globale.
  • Pourriez-vous nous fournir votre log4net de configuration, il suffit de modifier dans la fin de votre question?
  • Cette question de l'aide? stackoverflow.com/questions/738126/...

InformationsquelleAutor Ken | 2009-04-03