Próbuję skonfigurować Log4Net wyłącznie za pomocą kodu, ale kiedy zrobiłem z minimalną konfiguracją, zostałem zalany przez rejestrowanie wiadomości od NHibernate i płynnego interfejsu.Konfiguracja czystego kodu log4net z filtrem w C#
To, co próbuję zrobić, jest proste. Poinformuj Log4Net, aby wyświetlał mi tylko komunikaty logów z mojej pojedynczej klasy. I bawił się wokół trochę, ale nie mogę tego rozgryźć ...
Czy ktoś może pomóc, myślę, że poniższy kod ilustruje mój pomysł:
var filter = new log4net.Filter.LoggerMatchFilter();
filter.LoggerToMatch = typeof(DatabaseDirectory).ToString();
filter.AcceptOnMatch = false;
var x = new log4net.Appender.ConsoleAppender();
x.Layout = new log4net.Layout.SimpleLayout();
x.AddFilter(filter);
log4net.Config.BasicConfigurator.Configure(x);
Ok, dzięki za pomoc, ale nie tutaj musi być jakiś problem. Ale podchodzę bliżej. Wypróbowałem konfigurację XML, która ma znacznie więcej dokumentacji. I udało mi się osiągnąć pożądany rezultat przy użyciu następującej konfiguracji XML. Musi być jakaś błędna konfiguracja w powyższej wersji "czystego kodu".
Poniższa konfiguracja XML zawiera "poprawne" dane wyjściowe, które nie są takie same, jak powyższy kod konfiguracji. Ktoś widzi różnicę?
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="ConsoleAppender" />
</root>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="Examples.FirstProject.Entities.DatabaseDirectory"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%C.%M] %-5p %m%n" />
</layout>
</appender>
Początkowo swoją konfiguracja wygląda perfekcyjnie. Czy próbowałeś logować się bez usługi NHibernate, tylko dwa z własnych rejestratorów i sprawdzić, czy jeden jest akceptowany, a jeden odmowy? W ten sposób możesz przynajmniej wykluczyć NHibernate. –