OWIN мешает log4net

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

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

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

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

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

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

1 ответ

Решение

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

Trace.Listeners.Remove("HostingTraceListener");

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

Другие вопросы по тегам