I have log4net.config with multiple appender Form C# code i wanted to override minLvel of logging of certain appender
My appender setting is like
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" >
<file value="..\\Logs\\Api" />
<encoding value="utf-8" />
<appendToFile value="true" />
<datePattern value="_yyyyMMdd'.log'" />
<staticLogFileName value="false" />
<rollingStyle value="Composite"/>
<maxSizeRollBackups value="-1"/>
<maximumFileSize value="10MB"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="DEBUG" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{yyyy-MM-dd HH:mm:ss.fff}	%p	%t	%property{Ip}	%property{Context}	%property{ContextId}	%c{1}	%m%n" />
</layout>
</appender>
Following is my Current solution.
private static void SetFilterMinLogLevel(AppenderSkeleton appender, string inputLevel)
{
if (!String.IsNullOrWhiteSpace(inputLevel))
{
inputLevel = inputLevel.ToLower().Trim();
IFilter filterHead = appender.FilterHead;
LevelRangeFilter filterLevel = filterHead as LevelRangeFilter;
if (filterLevel == null)// one of my appender have one custom filter as well { filterHead = appender.FilterHead.Next; filterLevel = filterHead as LevelRangeFilter; ;
}
if (filterLevel != null)
{
switch (inputLevel)
{
case "info":
filterLevel.LevelMin = log4net.Core.Level.Info;//todo
break;
case "debug":
filterLevel.LevelMin = log4net.Core.Level.Debug;//todo
break;
case "warn":
filterLevel.LevelMin = log4net.Core.Level.Warn;//todo
break;
case "error":
filterLevel.LevelMin = log4net.Core.Level.Error;//todo
break;
case "fatal":
filterLevel.LevelMin = log4net.Core.Level.Fatal;//todo
break;
case "off":
filterLevel.LevelMin = filterLevel.LevelMax = log4net.Core.Level.Off;//trying to check switching off logs
break;
default:
Logger.DebugFormat("Unknown Log level {0}",inputLevel);
break;
}
}
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.