У меня та же проблема, что и у ОП. В log4net.config я установил debug = false. У меня также есть один набор FileAppender с определенным PatternLayout. Когда я использую log.Warn («test»), я получаю ожидаемые отформатированные результаты, записанные в ожидаемый текстовый файл. Однако я также получаю более подробную строку, записанную в консоль (stdout).
РЕДАКТИРОВАТЬ: Исправление для меня было устранить эту строку в моем коде
BasicConfigurator.Configure ();
Обратите внимание, что в моей конфигурации не было указано ничего, что явно указывало бы log4net писать на консоль и на объявленный FileAppender. Фактически, log4net debug = false был объявлен, и проблема продолжала сохраняться. Пример кода на домашней странице log4net небрежно вызывает BasicConfigurator.Configure (); Хотя я использую log4net, библиотека страдает от тех же проблем, что и многие амбициозные проекты с открытым исходным кодом. Существуют длинные конфигурации на основе XML, которые предоставляют разработчикам тысячи вариантов для задачи, которая должна иметь действительно более удобный интерфейс. Программисты не склонны ценить время друг друга. Мы применяем правило «не заставляй меня думать» в наших пользовательских интерфейсах, но не в наших машинных интерфейсах. Это как если бы мы презирали основной принцип, который универсален для хорошего дизайна. Сложности должны быть доступны разработчику, но не следует тратить несколько часов на выполнение основных функций. Учитывая это, я бы сказал, что log4net плохо спроектирован. Как и в случае с большинством программного обеспечения, существует много сложностей ради сложности. Если бы разработчики, руководившие проектом, были более талантливы, то наиболее распространенный вариант использования библиотеки (ссылка на нее и последующее использование ее для входа в текстовый файл в папке приложения) мог бы быть реализован с 5-10 минутами экспозиции без каких-либо предварительных знаний. Это не так, потому что дизайн интерфейса и методология настройки. Это подчеркивает причину, по которой я ненавижу то, как думает большинство разработчиков программного обеспечения. Они неспособны увидеть экспоненциальное значение простоты для наиболее распространенных вариантов использования и вместо этого предполагают, что чем удивительнее они делают интерфейс, тем большую ценность он добавит другим разработчикам. Они движимы эго и невежеством. Неудивительно, что большинство из них - изгои.