Ответ 1
Да, это возможно. И это очень просто, вам не нужно менять исходный код. Вы должны изменить только некоторые библиотеки .jar.
Посмотрите на эти статьи
Возможно ли иметь типичный вызов java.util.logging.Logger
и использовать ли он маршрут для ведения журнала с использованием SLF4J? Это было бы хорошо, поскольку мне не пришлось бы реорганизовывать старый код jul по строкам.
EG, скажем, мы имеем эту строку:
private static Logger logger = Logger.getLogger(MahClass.class.getName());
//...
logger.info("blah blah blah");
Было бы неплохо настроить это для вызова через SLF4J.
Да, это возможно. И это очень просто, вам не нужно менять исходный код. Вы должны изменить только некоторые библиотеки .jar.
Посмотрите на эти статьи
Это очень просто, а не проблема с производительностью.
В руководстве SLF4J есть два способа. Существуют также точные примеры в Javadocs
Если у вас нет logging.properties(для java.util.logging), добавьте это в свой код начальной загрузки:
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
Если у вас есть logging.properties(и вы хотите сохранить его), добавьте его в него:
handlers = org.slf4j.bridge.SLF4JBridgeHandler
В любом случае добавьте jul-to-slf4j.jar в свой путь к классам. Или через зависимость от maven:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.0</version>
</dependency>
Чтобы избежать снижения производительности, добавьте этот contextListener в logback.xml(с версии журнала 0.9.25):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<!-- reset all previous level configurations of all j.u.l. loggers -->
<resetJUL>true</resetJUL>
</contextListener>
...
</configuration>
Насколько я знаю, это невозможно. Альтернативным решением является использование Migrator Tool. Он может позаботиться о самой утомительной части миграции (замените импорт, замените Logger.getLogger
на LoggerFactory.getLogger
и т.д.) Для вас.
Обновление: Как отметил @user179437, это действительно возможно. Просто не рекомендуется, если у вас нет доступа к исходному коду.