是否可以配置/扩展log4net以在长时间停机期间停止记录相同的异常?

时间:2018-03-20 12:07:42

标签: .net logging log4net log4net-configuration log4net-filter

我们有一个分布式微服务应用程序,使用log4net和生产中的自定义appender。 问题是,在任何外部系统或服务中断期间,或者甚至在我们的令牌提供程序服务中的小打嗝期间,对于尝试访问该服务的每个用户,我们会获得一个或多个重复日志,将所有用户的数据相乘,我们得到在15分钟内超过20000个重复日志超出我们的配额。

如果可能的话,我们希望停止向我们的日志发送垃圾邮件而不添加对c#微服务的捕获。

我尝试过滤特定的日志,但log4net的过滤只能正常工作,如下:

我想过滤日志中带有“Token”字样的日志:

    <filter type="log4net.Filter.StringMatchFilter">
        <acceptOnMatch value="false" />
        <stringToMatch value="Token" />
    </filter>

但是......仍然记录带有“令牌”的错误消息:(

特别是,使用以下过滤器:

    <filter type="log4net.Filter.StringMatchFilter">
        <acceptOnMatch value="**true**" />
        <stringToMatch value="Token" />
    </filter>
    <filter type="log4net.Filter.DenyAllFilter" />

仅记录包含字符串“Token”的消息(好的,这是我希望的行为)

使用以下过滤器:

    <filter type="log4net.Filter.StringMatchFilter">
        <acceptOnMatch value="false" />
        <stringToMatch value="Token" />
    </filter>
    <filter type="log4net.Filter.DenyAllFilter" />

日志中没有记录任何消息(好的,这是我希望的行为)

AcceptOnMatch的Apaches文档中的条目:

  

“AcceptOnMatch属性是一个标志,用于确定找到匹配级别时的行为。如果该标志设置为true,则过滤器将接受日志记录事件,否则将中性该事件。“

那怎么会被拒绝?这种行为甚至可能吗?有任何想法吗?

对于这篇文章的篇幅很抱歉,我最欢迎任何解决原始问题的方法,无论是针对此过滤问题还是避免垃圾邮件日志的替代方案。

非常感谢您的阅读!

0 个答案:

没有答案