OWIN вмешивается в log4net

В моем приложении у меня есть следующая страtagsя / добавление журнала:

  • DebugAppender : если корневой уровень DEBUG, напишите каждое сообщение, которое соответствует DEBUG, на выходной трассировщик трассировки по умолчанию
  • ConsoleAppender : если режим приложения (свойство глобального контекста) является «консолью», напишите каждое сообщение выше WARN на консольный вывод
  • EventLogAppender : если режим приложения (свойство глобального контекста) является «службой», напишите каждое сообщение выше ERRROR на вывод консоли
  • RollingFileAppender : напишите каждое сообщение выше INFO в скользящий плоский файл

Это очень хорошо работает во всем приложении, до самой первой строки я запускаю веб-хост IAppBuilder интерфейс IAppBuilder . Как только я WebApp.Start , я заметил следующее поведение:

  • Отладочные сообщения (ILogger.Debug) записываются на консольный вывод
  • Отладочные сообщения (ILogger.Debug) дважды записываются на вывод отладки VS

При дальнейших исследованиях я понял, что OWIN молча подключил экземпляр System.Diagnostics.DefaultTraceListener и System.Diagnostics.TextWriterTraceListener к стандартным выводам trace / debug, которые могут быть корнем проблемы. Однако объявление функции DefaultTraceListener в app.config явно не помогло.

Есть ли способ, которым я могу настроить OWIN меньше … подлый?

Вы можете удалить слушателя в код запуска, например:

 Trace.Listeners.Remove("HostingTraceListener"); 

(Имя из исходного кода )