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");
(Имя из исходного кода)