当前位置:  开发笔记 > 编程语言 > 正文

如何以编程方式将过滤器添加到log4net?

如何解决《如何以编程方式将过滤器添加到log4net?》经验,为你挑选了1个好方法。

这是我尝试在不使用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代码:

  
    
  
  

进入我的C#代码.但问题是我不知道如何使用过滤器.我可以创建一个过滤器:log4net.Filter.IFilter filter;filter不提供这些选项......

你能帮忙把过滤器放到我的代码中吗?



1> 小智..:

尝试:

...
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);
...

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有