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); |
| 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); } |
|
catch (Exception e) { log.log(Level.SEVERE, "Jakiś komunikat o błędzie", e); } |
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: