不要使用 Apache Tomcat org.apache.juli.logging

此規則會偵測是否使用 org.apache.juli.logging.Logorg.apache.juli.logging.LogFactory 類別和方法。 這些記載方法在 WebSphere Traditional 或 Liberty 中無法使用,必須移轉。

原始檔掃描器提供了快速修正程式。 它會以 java.util.logging.Logger 取代 org.apache.juli.logging.LogFactory。 此外,也會以 Java 的 Logger.log(Level, message) 方法取代 Apache Tomcat 的記載方法。

有些 Apache Tomcat 方法會直接對映至所定義的 java.util.logging.Level。 對於未直接對映的層次,您可以在「分析配置」對話框中自訂記載層次。 此外,快速修正程式會更新類別的 import 陳述式。

這個對映表顯示快速修正程式取代項目。 在下表中,會傳遞 Throwable 作為第二個參數的記載方法,會以其對應項目的相同方式來對映。

org.apache.juli.logging 方法 java.util.logging 方法 可配置
LogFactory.getLog(Class.class) Logger.getLogger(Class.class.getName())
LogFactory.getLog("log name") Logger.getLogger("log name")
LogFactory.getInstance(Class.class) Logger.getLogger(Class.class.getName())
LogFactory.getInstance("log name") 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® 類別 com.ibm.websphere.logging.WsLevel 中。 它延伸了 java.util.logging.Level,而提供其他的記載層次。 如果您不想使用 WsLevel 所定義的層次,您也可以在「分析配置」對話框中,按照這項 Tomcat Java 規則配置那些對映。
  3. 並非所有 LogFactory 方法都會移轉。 在移轉基本的記載方法之後,您可能需要進行其他的手動移轉。 請評估您應用程式中任何其他使用的 LogFactory 方法。
  4. org.apache.juli.logging.Log 類別中的方法具有類型為 java.lang.Object 的參數。 java.util.logging.Logger 類別中的方法具有類型為 java.lang.String 的參數。 如果您使用非 java.lang.String 類型的參數,則在執行快速修正程式以從 org.apache.juli.logging.Log 移轉至 java.util.logging.Logger 之後,可能需要執行額外的手動移轉,以將 toString() 新增至參數。

如需相關資訊,請參閱下列的 Java 說明文件: