Как изменить уровень slf4j во время выполнения?

Я использую SLF4j в качестве своей структуры ведения журналов, поддерживаемой log4j. Моя проблема в том, что я ищу способ изменить уровень ведения журнала для моего регистратора во время выполнения.

Я понимаю, что slf4j не разрешает это напрямую через собственный API, и, следовательно, мне нужно напрямую обращаться к провайдеру ведения журналов. Лично я считаю это огромным недостатком slf4j. Итак, теперь мой вопрос: как я могу программно определить через slf4j, какого провайдера я использую? Самая большая цель использования slf4j заключается в том, что вы становитесь независимыми от провайдера — вы можете легко переключаться между вашей любимой системой ведения журнала без необходимости что-либо перекодировать. Но теперь, если мне приходится делать прямые вызовы log4j, я теряю эту возможность.

По крайней мере, я хотел бы иметь возможность определить, использую ли я log4j в качестве поставщика, и если да, то разрешить пользователю переключать уровни журнала.

Если я выполню LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME), результатом будет экземпляр org.slf4j.impl.Log4jLoggerAdapter, а даже не org.apache. log4j.Logger(как я и надеялся/ожидал).

Есть ли способ узнать это?

Спасибо, Eric

15
задан Eric B. 21 June 2012 в 19:08
поделиться