Обобщённый интерфейс для разных библиотек?
Хочу менять библиотеки для логирования, например, на лету, не рыская по приложения и не меняя все вызовы конкретной библиотеки на вызовы другой (все эти LogDebug, LogTrace). Но у них у всех разный набор уровней логирования, форматтеры, таргеты и вообще понятия. Ладно там с форматтерами-таргетами - в конфиг-файле написать можно. Но в коде как?
Можно ли написать свой универсальный интерфейс для всех этих библиотек или большинства из них? По мне, или придётся делать ещё больше уровней логирования (чтобы покрыть все случаи во всех популярных либах), или придётся ограничиваться некими универсальными и все остальные сводить к ним. Т.е. мой универсальный интерфейс будет либо невероятно навороченным, либо ограниченным, подходящим лишь для текущего приложения.
У МС есть что-то подобное, но там, похоже, пошли по пути навороченности, где подавляющая часть перегрузок (типа EventId) просто не нужна, т.к. в некоторых логгерах и приложениях даже понятия такого нет.
Как вообще решается такая проблема? Или вы для проекта выбираете какой-то логгер и надеетесь, что с ним всё будет в порядке на протяжении всей жизни приложения, и мигрировать на другой логгер не придётся?