【问题标题】:log4net with a filter turned off not outputting关闭过滤器的 log4net 不输出
【发布时间】:2013-05-28 02:55:01
【问题描述】:

确定我以前使用过这个过滤器,但是...我已经达到调试级别,过滤器关闭(即,匹配=真时接受)和一个_log。在未输出的过滤器命名空间中调试(“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 功能)。

【问题讨论】:

  • 你的 app.config 的 configSections 中是否有 log4net(也许只是发布完整的配置)

标签: c# debugging log4net


【解决方案1】:

您是否定义了 XMLConfigurator 观察程序?这指示 log4net 读取 log4net 配置。

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

【讨论】:

  • @mrtentju。您的建议确实让我意识到我错过了对 log4net 的引用,请参阅我的上次更新。不过,这个新项目还没有结束。干杯
【解决方案2】:

删除过滤器,然后重试。

【讨论】:

  • 你在哪里调用这行代码=> static readonly ILog _logger = LogManager.GetLogger(typeof(IEntityWithTypedId)); ?
  • 在同名的类中,尽管您确实只是发现了其他东西。它不应该是界面,所以我把前面的“我”去掉了。虽然仍然没有报酬......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
相关资源
最近更新 更多