Dave,

The following works for me (mind the line breaks!)


public static void DisableAppender(string name)
{
  foreach(log4net.Appender.AppenderSkeleton appender in
GetAllAppenders())
  {
    if (appender.Name == name)
    {
      appender.Threshold = log4net.Core.Level.Off;
    }
  }
}
public static void DumpAppenders()
{
  foreach(log4net.Appender.AppenderSkeleton appender in
GetAllAppenders())
  {
    string info = "Appender: Type=["+appender.GetType().Name+"]
Name=["+appender.Name+"] Threshold=[";
    if (appender.Threshold == null)
    {
      info += "No Threshold Set";
    }
    else
    {
      info += appender.Threshold.Name;
    }
    info += "]";

    Console.WriteLine(info);
  }
}
public static log4net.Appender.IAppender[] GetAllAppenders()
{
  ArrayList appenders = new ArrayList();

  log4net.Repository.Hierarchy.Hierarchy h =
(log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetLoggerRepo
sitory();
  appenders.AddRange(h.Root.Appenders);

  foreach(log4net.Repository.Hierarchy.Logger logger in
h.GetCurrentLoggers())
  {
    appenders.AddRange(logger.Appenders);
  }

  return
(log4net.Appender.IAppender[])appenders.ToArray(typeof(log4net.Appender.
IAppender));
}


To disable the ConsoleAppender just call
DisableAppender("ConsoleAppender") after the log4net has been
configured.

Nicko 

> -----Original Message-----
> From: David B. Witt [mailto:[EMAIL PROTECTED] 
> Sent: 14 October 2004 11:50
> To: [email protected]
> Subject: Appender Levels - Continued
> 
> 
> Nicko,
> 
> I understand what you are saying.  However, when I used the 
> code snipet you offered (included in my earlier e-mail), it 
> didn't find the appender.  The appender variable was null 
> after executing the code snipnet:
> 
> log4net.Appender.AppenderSkeleton appender = 
> (log4net.Appender.AppenderSkeleton)logger.GetAppender("myAppender");
> 
> where logger was a valid  variable gotten by executing the 
> code snipet:
> 
> log4net.Repository.Hierarchy.Logger logger = 
> ((log4net.Repository.Hierarchy.Logger)log4net.LogManager.GetLo
> gger("Root").Logger);
> 
> Since the value of appender is null, how will I be able to 
> set the threshold using the code snipet:
> 
> appender.Threshold = Level.Off
> 
> That is my question.
> 
> Since I am obviously brain dead on this, could you please 
> re-post your code snipets to get a list of all appenders of 
> the root logger and then show me show to get the name of each 
> appender, the appender's current threshold and then finally 
> how to set the appender's level to a new threshold.
> 
> Sorry to be such a pain, but I am missing something here.  
> Perhaps some brute force "drop in code" will get me over this hump.
> 
> THANKS a  MILLION for all your patience ad help in this.
> 
> Dave
> 
> 
> 
> 
> 
> 
> 

Reply via email to