我找到一個bug在這裏,還是我做錯了這個配置?log4net的記錄器的層次結構有類似的日誌根名稱
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<logger name="MyApp.Common">
<level value="WARN" />
<appender-ref ref="ConsoleAppender" />
</logger>
<logger name="MyApp.Common.Namespace.SomeGenericClass`1">
<level value="INFO" />
<appender-ref ref="ConsoleAppender" />
</logger>
。假定我命名我的記錄器根據標準「...... DeclaringType」命名方案,我的期望是這裏的MyApp.Common命名空間下,一切都會得到,只要它是登錄到控制檯WARN或更高。 SomeGenericClass`1中的任何內容如果它是INFO或更高,都會被記錄(如果是WARN記錄器,則會記錄兩次WARN或更高)。
發生什麼事是SomeGenericClass`1中獲取登錄信息的任何東西將被管道輸出到控制檯兩次,而不是預期的一次。如果我刪除更具體的記錄器,則不會記錄任何內容,如果我刪除了不太特定的記錄器,則只會記錄一次,這兩個都如預期的那樣。另外,在配置文件中反轉記錄器的順序不會產生任何效果(正如我所期望的那樣,因爲我猜測順序無關緊要)。
難道我在這裏找到了一個bug,還是我失去了一些東西在層次結構中是如何工作的重要?