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
>
>
>
>
>
>
>