Я пытаюсь настроить Log4Net чисто по коду, но когда я делал это с минимальной конфигурацией, я был затоплен путем записи сообщений из NHibernate и свободного интерфейса.
Итак, я пытаюсь сделать это просто. Скажите Log4Net, чтобы показать мне только сообщения журнала моего одного класса. Я немного поиграл, но не могу понять это...
Может кто-нибудь помочь, я думаю, что следующий код иллюстрирует мою идею:
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);
Хорошо, спасибо за вашу помощь, но здесь должна быть какая-то проблема. Но я сближаюсь. Я попробовал XML-конфигурацию, которая имеет гораздо больше документации. И мне удалось достичь желаемого результата, используя следующую конфигурацию XML. Должна быть некоторая неправильная конфигурация в версии "чистого кода" выше.
Следующая конфигурация XML предоставляет "правильный" вывод, который не совпадает с конфигурацией в коде выше. Кто-нибудь видит разницу?
<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>