此規則會偵測是否使用 org.apache.juli.logging.Log 及 org.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); } |
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 說明文件: