关闭过滤器的Log4net不输出

本文关键字:输出 Log4net 过滤器 | 更新日期: 2023-09-27 18:15:20

肯定我以前用过这个过滤器,但是…我有调试的级别,过滤器关闭(即,接受match = true),并在过滤器名称空间中的_log.Debug("whatever")不输出。

我在一个类中定义了一个日志记录器,它是过滤器中使用的名称空间的一部分:

    private static readonly ILog _logger = LogManager.GetLogger(typeof(IEntityWithTypedId<>));

关于如何弄清楚为什么我没有看到任何东西以及如何修复它的任何想法?

  <log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <filter type="log4net.Filter.LoggerMatchFilter">
        <loggerToMatch value="Smack.Core.Lib.DomainSuperTypes.EntityImpl" />
        <acceptOnMatch value="true" />
      </filter>
      ...
    </appender>
    <root>
      <appender-ref ref="ConsoleAppender"/>
      <level value="DEBUG"/>
    </root>
  </log4net>
<标题> 更新

我确实做了一些蠢事;我一直在一个新的项目,我还没有添加到log4net的参考!

这是个好消息,因为它仍然不能正常工作。然而,它不是过滤器,因为当从不同的项目运行时,它确实按照预期工作。添加watch=true组装属性也没有帮助。

这是另一个愚蠢和明显的东西(像没有引用log4net!),但我还没有看到它。

<标题> 解决

我没有看到的输出是从一个依赖项目中的记录器到我添加的新项目。该解决方案有多个项目,它们都通过符号链接共享相同的app.config,这就是为什么我希望在新项目中与其他项目一样工作的原因。但它当然没有。

直到我在新项目中添加了一个记录器!现在一切都神奇地工作了,所以我想这就是原因(如果是这样的话,不能说这真的是一个很好的log4net功能)。

关闭过滤器的Log4net不输出

您定义了XMLConfigurator观察器吗?这指示log4net读取log4net配置。

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

删除过滤器,然后再试。