Nie używaj pakietu org.apache.juli.logging produktu Apache Tomcat

Ta reguła wykrywa użycie metod i klas org.apache.juli.logging.Log oraz org.apache.juli.logging.LogFactory. Te metody logging nie są dostępne na tradycyjnym serwerze WebSphere ani Liberty i należy je poddać migracji.

Szybka poprawka jest dostępna w skanerze kodu źródłowego. Zastępuje ona klasę org.apache.juli.logging.LogFactory klasą java.util.logging.Logger. Ponadto zastępuje metody rejestrowania produktu Apache Tomcat metodą Logger.log(Level, message) języka Java.

Niektóre metody produktu Apache Tomcat są odwzorowane bezpośrednio na zdefiniowaną klasę java.util.logging.Level. W przypadku poziomów, które nie są odwzorowywane bezpośrednio, można dostosować poziom rejestrowania w oknie dialogowym Konfiguracja analizy. Ponadto szybka poprawka aktualizuje instrukcje importu klasy.

Elementy użyte do wymiany przez szybką poprawkę są wyświetlone w tej tabeli odwzorowań. Metody Log, w których drugim przekazywanym parametrem jest Throwable, są odwzorowywane w taki sam sposób, jak ich odpowiedniki w poniższej tabeli.

Metoda org.apache.juli.logging Metoda java.util.logging Konfigurowalne
LogFactory.getLog(Class.class) Logger.getLogger(Class.class.getName()) Nie
LogFactory.getLog("log name") Logger.getLogger("log name") Nie
LogFactory.getInstance(Class.class) Logger.getLogger(Class.class.getName()) Nie
LogFactory.getInstance("log name") Logger.getLogger("log name") Nie
Log.fatal("mgs") Logger.log(WsLevel.FATAL, "msg") Tak
Log.error("msg") Logger.log(Level.SEVERE, "msg") Tak
Log.warn("msg") Logger.log(Level.WARNING, "msg") Nie
Log.info("msg") Logger.log(Level.INFO, "msg") Nie
Log.debug("msg") Logger.log(WsLevel.DETAIL, "msg") Tak
Log.trace("msg") Logger.log(Level.FINE, "msg") Tak

Przykładowo, operacja tworzenia instancji klasy rejestrującej:

Log log = LogFactory.getLog(MyClass.class);

jest migrowana do
Logger log = Logger.getLogger(MyClass.class.getName());

W tym przykładzie przedstawiono wywołanie metody org.apache.juli.logging.Log.error() z obiektem Throwable jako drugim parametrem.

catch (Exception e) {
log.error("Jakiś komunikat o błędzie", e);
}

Przykład jest poddawany migracji do następującego kodu:
catch (Exception e) {
log.log(Level.SEVERE, "Jakiś komunikat o błędzie", e);
}


Uwagi:
  1. Niektóre migracje metod rejestrowania są konfigurowalne. Na przykład jeśli metoda Log.trace ma zostać zmigrowana do poziomu innego niż WsLevel.DETAIL, można zmienić go w oknie dialogowym Konfiguracja analizy.
  2. Poziom WsLevel jest definiowany w klasie IBM(R) o nazwie com.ibm.websphere.logging.WsLevel. Rozszerza ona klasę java.util.logging.Level, udostępniając dodatkowe poziomy rejestrowania. Jeśli nie mają być używane poziomy zdefiniowane w klasie WsLevel, można również skonfigurować te odwzorowania w oknie dialogowym Konfiguracja analizy w tej regule Java produktu Tomcat.
  3. Nie wszystkie metody LogFactory są migrowane. Po zmigrowaniu podstawowych metod rejestrowania może być konieczne przeprowadzenie dodatkowej migracji ręcznie. Należy ocenić wszelkie dodatkowe zastosowania metod LogFactory w aplikacji.
  4. Metody w klasie org.apache.juli.logging.Log mają parametry typu java.lang.Object. Metody w klasie java.util.logging.Logger mają parametry typu java.lang.String. Jeśli używane są parametry z typami innymi niż java.lang.String, konieczne może być przeprowadzenie dodatkowej migracji ręcznej w celu dodania metody toString () do parametrów po uruchomieniu szybkiej poprawki do migracji z klasy org.apache.juli.logging.Log do klasy java.util.logging.Logger.

Więcej informacji na ten temat można znaleźć w następującej dokumentacji języka Java: