Я использую SLF4j в качестве своей структуры ведения журналов, поддерживаемой log4j. Моя проблема в том, что я ищу способ изменить уровень ведения журнала для моего регистратора во время выполнения.
Я понимаю, что slf4j не разрешает это напрямую через собственный API, и, следовательно, мне нужно напрямую обращаться к провайдеру ведения журналов. Лично я считаю это огромным недостатком slf4j. Итак, теперь мой вопрос: как я могу программно определить через slf4j, какого провайдера я использую? Самая большая цель использования slf4j заключается в том, что вы становитесь независимыми от провайдера — вы можете легко переключаться между вашей любимой системой ведения журнала без необходимости что-либо перекодировать. Но теперь, если мне приходится делать прямые вызовы log4j, я теряю эту возможность.
По крайней мере, я хотел бы иметь возможность определить, использую ли я log4j в качестве поставщика, и если да, то разрешить пользователю переключать уровни журнала.
Если я выполню LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)
, результатом будет экземпляр org.slf4j.impl.Log4jLoggerAdapter
, а даже не org.apache. log4j.Logger
(как я и надеялся/ожидал).
Есть ли способ узнать это?
Спасибо, Eric