请勿使用 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());

本示例显示以 Throwable 作为第二个参数来调用 org.apache.juli.logging.Log.error()

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. 在 IBM® 类 com.ibm.websphere.logging.WsLevel 中定义了 WsLevel。 此 IBM® 类继承了 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 文档: