Не использовать метод Apache Tomcat org.apache.juli.logging

Это правило определяет использование классов и методов 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);
}


Примечания:
  1. Некоторые из операций миграции методов ведения протоколов можно настроить. Например, если требуется выполнить миграцию метода Log.trace на уровень, отличный от WsLevel.DETAIL, уровень можно изменить в окне Конфигурация анализа.
  2. WsLevel определен в классе IBM(R) com.ibm.websphere.logging.WsLevel. Он расширяет java.util.logging.Level и добавляет дополнительные уровни протокола. Если использовать определенные в WsLevel уровни не требуется, привязки можно настроить в окне Конфигурация анализа для этого правила Java Tomcat.
  3. Миграция выполняется не для всех методов LogFactory. После миграции основных методов ведения протоколов может потребоваться дополнительная миграция, выполняемая вручную. Оцените дополнительное использование методов LogFactory в приложении.
  4. Методы класса 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: