此规则会检测是否使用了 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()); |
本示例显示以 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); } |
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 文档: