Это правило определяет использование классов и методов org.apache.juli.logging.Log и org.apache.juli.logging.LogFactory. Эти методы ведения протоколов недоступны в WebSphere traditional и Liberty и для них требуется выполнить миграцию.
В сканере исходного кода доступно быстрое исправление. Оно заменяет org.apache.juli.logging.LogFactory на java.util.logging.Logger. Оно также заменяет методы ведения протоколов Apache Tomcat на метод Java Logger.log(Level, message).
Некоторые методы Apache Tomcat преобразуются непосредственно в определенный java.util.logging.Level. Для уровней, которые не преобразуются напрямую, в окне Конфигурация анализа можно настроить уровень протокола. Кроме того, быстрое исправление изменяет операторы импорта класса.
Замены, выполняемые процедурой быстрого исправления, показаны в следующей таблице преобразований. Методы ведения протокола, передающие в качестве второго параметра значение Throwable, преобразуются аналогично соответствующим элементам в следующей таблице.
| Метод org.apache.juli.logging | Метод java.util.logging | Настраиваемый |
|---|---|---|
| LogFactory.getLog(Class.class) | Logger.getLogger(Class.class.getName()) | Нет |
| LogFactory.getLog("og name") | Logger.getLogger("log name") | Нет |
| LogFactory.getInstance(Class.class) | Logger.getLogger(Class.class.getName()) | Нет |
| LogFactory.getInstance("имя протокола") | Logger.getLogger("log name") | Нет |
| Log.fatal("mgs") | Logger.log(WsLevel.FATAL, "msg") | Да |
| Log.error("msg") | Logger.log(Level.SEVERE, "msg") | Да |
| Log.warn("msg") | Logger.log(Level.WARNING, "msg") | Нет |
| Log.info("msg") | Logger.log(Level.INFO, "msg") | Нет |
| Log.debug("msg") | Logger.log(WsLevel.DETAIL, "msg") | Да |
| Log.trace("msg") | Logger.log(Level.FINE, "msg") | Да |
Пример: создание экземпляра класса протокола:
| Log log = LogFactory.getLog(MyClass.class); |
| Logger log = Logger.getLogger(MyClass.class.getName()); |
В этом примере показан вызов org.apache.juli.logging.Log.error() с Throwable в качестве второго параметра.
| catch (Exception e) { log.error("Some error message", e); } |
| catch (Exception e) { log.log(Level.SEVERE, "Some error message", e); } |
org.apache.juli.logging.Log имеют параметры с типом java.lang.Object.
Методы класса java.util.logging.Logger имеют параметры с типом java.lang.String.
При использовании параметров, тип которых отличается от java.lang.String,
может потребоваться дополнительное изменение - потребуется вручную добавить toString() к параметрам после выполнения процедуры быстрого исправления, заменяющей org.apache.juli.logging.Log на java.util.logging.Logger.
Дополнительная информация приведена в следующей документации по Java: