我确定我之前使用过这个过滤器,但是......我有调试级别,关闭过滤器(即,接受匹配= true)和_log。未输出的过滤器命名空间中的Debug(“whatever”)。
我在类中定义了一个logger,它是过滤器中使用的命名空间的一部分:
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功能)。
答案 0 :(得分:2)
您是否定义了XMLConfigurator观察者?这表示log4net读取log4net配置。
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
答案 1 :(得分:1)
删除过滤器,然后重试。