org.apache.juli.logging von Apache Tomcat nicht verwenden

Diese Regel erkennt die Verwendung der Klassen org.apache.juli.logging.Log und org.apache.juli.logging.LogFactory und deren Methoden. Diese Protokollierungsmethoden sind in WebSphere Traditional und Liberty nicht verfügbar und müssen migriert werden.

Es ist eine Schnellkorrektur im Quellenscanner verfügbar. Sie ersetzt org.apache.juli.logging.LogFactory durch java.util.logging.Logger. Sie ersetzt auch die Protokollierungsmethoden von Apache Tomcat durch die Java-Methode Logger.log(Level, message).

Einige Apache-Tomcat-Methoden sind direkt einer definierten java.util.logging.Level zugeordnet. Für die Stufen, für die es keine direkte Zuordnung gibt, können Sie die Protokollstufe im Dialog "Analysekonfiguration" anpassen. Außerdem aktualisiert die Schnellkorrektur die Anweisungen zum Importieren von Klassen.

Welche Ersetzungen von der Schnellkorrektur vorgenommen werden, können Sie der folgenden Zuordnungstabelle entnehmen. Protokollmethoden, die ein Element der Throwable-Klasse als zweiten Parameter übergeben, werden auf dieselbe Weise wie ihre Entsprechungen in der folgenden Tabelle zugeordnet.

Methode von org.apache.juli.logging Methode von java.util.logging Konfigurierbar
LogFactory.getLog(Class.class) Logger.getLogger(Class.class.getName()) Nein
LogFactory.getLog("Protokollname") Logger.getLogger("Protokollname") Nein
LogFactory.getInstance(Class.class) Logger.getLogger(Class.class.getName()) Nein
LogFactory.getInstance("Protokollname") Logger.getLogger("Protokollname") Nein
Log.fatal("mgs") Logger.log(WsLevel.FATAL, "msg") Ja
Log.error("msg") Logger.log(Level.SEVERE, "msg") Ja
Log.warn("msg") Logger.log(Level.WARNING, "msg") Nein
Log.info("msg") Logger.log(Level.INFO, "msg") Nein
Log.debug("msg") Logger.log(WsLevel.DETAIL, "msg") Ja
Log.trace("msg") Logger.log(Level.FINE, "msg") Ja

Die Erstellung einer Instanz der Protokollklasse

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

wird beispielsweise auf den folgenden Code migriert:
Logger log = Logger.getLogger(MyClass.class.getName());

Das folgende Beispiel zeigt einen Aufruf von org.apache.juli.logging.Log.error() mit einem Element der Throwable-Klasse als zweiten Parameter.

catch (Exception e) {
log.error("Some error message", e);
}

Das Beispiel wird auf den folgenden Code migriert:
catch (Exception e) {
log.log(Level.SEVERE, "Some error message", e);
}


Anmerkungen:
  1. Die Migration einiger Protokollmethoden ist konfigurierbar. Wenn Sie beispielsweise die Methode Log.trace auf eine andere Stufe als WsLevel.DETAIL migrieren möchten, können Sie dies im Dialogfenster "Analysekonfiguration" ändern.
  2. WsLevel ist in der IBM(R) Klasse com.ibm.websphere.logging.WsLevel definiert und erweitert java.util.logging.Level um weitere Protokollstufen. Wenn Sie die von WsLevel definierten Stufen nicht verwenden möchten, können Sie diese Zuordnungen im Dialogfenster "Analysekonfiguration" unter Tomcat-Java-Regel konfigurieren.
  3. Es werden nicht alle LogFactory-Methoden migriert. Nach der Migration der Basisprotokollierungsmethoden müssen Sie möglicherweise zusätzliche manuelle Migrationsschritte ausführen. Bewerten Sie jede weitere Verwendung von LogFactory-Methoden in Ihrer Anwendung.
  4. Die Parameter der Methoden in der Klasse org.apache.juli.logging.Log sind vom Typ java.lang.Object. Die Parameter der Methoden in der Klasse java.util.logging.Logger sind vom Typ java.lang.String. Wenn Sie Parameter verwenden, die nicht vom Typ java.lang.String sind, sind nach der Schnellkorrektur für die Migration von org.apache.juli.logging.Log auf java.util.logging.Logger möglicherweise zusätzliche manuelle Migrationsschritte erforderlich, um toString zu den Parametern hinzuzufügen.

Weitere Informationen finden Sie in der folgenden Java-Dokumentation: