2013-05-26 108 views
0

我是當然我已經使用過這個非常過濾器,但...我有水平調試,過濾器關閉(即接受匹配=真),和不在輸出的過濾器命名空間中的_log.Debug(「whatever」)。log4net過濾器關閉不輸出

我有像這樣一類中定義的記錄,這是在過濾器中使用的命名空間的一部分:

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> 

UPDATE

嗯,我肯定是做一些愚蠢的;我一直在一個新的項目中,我還沒有添加對log4net的引用!

儘管這是個好消息,因爲它仍然無法正常工作。然而,它並不是過濾器,因爲它從另一個項目運行時確實按預期工作。添加watch = true組件屬性也沒有幫助。

這是愚蠢的,但顯而易見(雖然沒有一個引用log4net!),但我還沒有看到它。

解決

我沒有看到的產量從記錄儀中的一個相關項目到新我補充道。該解決方案有多個項目,都通過符號鏈接共享相同的app.config,這就是爲什麼我期望在新項目中工作與其他項目相同的原因。但它當然不是。

這是直到我實際上添加一個記錄器到新的項目!現在所有的東西都神奇地工作了,所以我想這就是原因(如果是這樣的話,不能說這真的是一個很好的log4net功能)。

+0

你有沒有在你的app.config的configSections log4net(也許只是發佈完整的配置) – sgmoore

回答

1

刪除過濾器,然後再試一次。

+0

好想法,但沒有解決,請參閱更新。歡呼聲 – Berryl

+1

你在哪裏調用這行代碼=> static readonly ILog _logger = LogManager.GetLogger(typeof(IEntityWithTypedId <>)); ? –

+0

在同一個名字的類裏面,雖然你*只是發現了別的東西。它不應該是界面,所以我把領先的'我'關閉了。儘管如此,仍然沒有付錢 – Berryl

2

您是否定義了XMLConfigurator監視器?這表示要log4net讀取log4net配置。

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

@mrtentju。您的建議*使我意識到我錯過了對log4net的引用,請參閱我的最新更新。儘管如此,還沒有從這個新項目中脫身。乾杯 – Berryl