2016-01-09 2 views
1

Вот моя попытка создать log4net без использования XML:Как добавить фильтр в log4net программно?

public class Logger 
{ 
    public static void Setup() 
    { 
     Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); 

     PatternLayout patternLayout = new PatternLayout();   
     patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline"; 
     patternLayout.ActivateOptions(); 
     RollingFileAppender roller = new RollingFileAppender(); 
     roller.AppendToFile = false; 
     roller.File = @"Logs\EventLog.txt"; 
     roller.Layout = patternLayout; 
     roller.MaxSizeRollBackups = 5; 
     roller.MaximumFileSize = "1GB"; 
     roller.RollingStyle = RollingFileAppender.RollingMode.Size; 
     roller.StaticLogFileName = true; 
     roller.ActivateOptions(); 
     hierarchy.Root.AddAppender(roller); 

     MemoryAppender memory = new MemoryAppender(); 
     memory.ActivateOptions(); 
     hierarchy.Root.AddAppender(memory); 

     hierarchy.Root.Level = Level.Info; 
     hierarchy.Configured = true; 
    } 
} 

Теперь мне нужно, чтобы превратить этот XML-код:

<filter type="log4net.Filter.StringMatchFilter"> 
    <stringToMatch value="error"/> 
    </filter> 
    <filter type="log4net.Filter.DenyAllFilter"/> 

в моей C# -кода. Но проблема в том, что я не знаю, как использовать фильтр. можно создать фильтр: log4net.Filter.IFilter filter; но filter не предоставляет these варианты ...

Не могли бы вы помочь instert фильтра в мой код?

+0

Возможный дубликат: http://stackoverflow.com/questions/885378/log4net-pure-code-configuration-with-filter-in-c-sharp –

ответ

5

Try:

... 
RollingFileAppender roller = new RollingFileAppender(); 
roller.AppendToFile = false; 
roller.File = @"Logs\EventLog.txt"; 
roller.Layout = patternLayout; 
roller.MaxSizeRollBackups = 5; 
roller.MaximumFileSize = "1GB"; 
roller.RollingStyle = RollingFileAppender.RollingMode.Size; 
roller.StaticLogFileName = true; 

var filter = new log4net.Filter.StringMatchFilter 
{ 
    StringToMatch = "error", 
    AcceptOnMatch = true 
} 
roller.AddFilter(filter); 

var filterDeny = new log4net.Filter.DenyAllFilter(); 
roller.AddFilter(filterDeny); 
...