Não usar Apache Tomcat org.apache.juli.logging

Essa regra detecta o uso das classes e dos métodos org.apache.juli.logging.Log e org.apache.juli.logging.LogFactory. Esses métodos de criação de log não estão disponíveis no WebSphere tradicional ou no Liberty e devem ser migrados.

Há uma correção rápida disponível no scanner de origem. Ela substitui o org.apache.juli.logging.LogFactory por java.util.logging.Logger. Isso também substitui os métodos de criação de log do Apache Tomcat com o método Java Logger.log(Level, message).

Alguns dos métodos Apache Tomcat são mapeados diretamente para um java.util.logging.Level definido. Para os níveis que não são mapeados diretamente, é possível customizar o nível de log no diálogo de Configuração da Análise. Além disso, a correção rápida atualiza as instruções de importação de classe.

As substituições de correção rápida são mostradas nesta tabela de mapeamento. Os métodos de log que transmitem um Throwable como um segundo parâmetro são mapeados da mesma maneira que suas contrapartes na tabela a seguir.

Método org.apache.juli.logging Método java.util.logging Configurável
LogFactory.getLog(Class.class) Logger.getLogger(Class.class.getName()) Não
LogFactory.getLog("log name") Logger.getLogger("log name") Não
LogFactory.getInstance(Class.class) Logger.getLogger(Class.class.getName()) Não
LogFactory.getInstance("log name") Logger.getLogger("log name") Não
Log.fatal("mgs") Logger.log(WsLevel.FATAL, "msg") Sim
Log.error("msg") Logger.log(Level.SEVERE, "msg") Sim
Log.warn("msg") Logger.log(Level.WARNING, "msg") Não
Log.info("msg") Logger.log(Level.INFO, "msg") Não
Log.debug("msg") Logger.log(WsLevel.DETAIL, "msg") Sim
Log.trace("msg") Logger.log(Level.FINE, "msg") Sim

Por exemplo, a criação da instância da classe de log:

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

é migrada para
Log do Logger = Logger.getLogger (MyClass.class.getName ());

Este exemplo mostra uma chamada para org.apache.juli.logging.Log.error() com um Throwable como um segundo parâmetro.

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

O exemplo é migrado para o código a seguir:
catch (Exception e) {
log.log(Level.SEVERE, "Some error message", e);
}


Notas:
  1. Algumas das migrações de método de log são configuráveis. Por exemplo, se desejar que o método Log.trace seja migrado para um nível que não seja WsLevel.DETAIL, você poderia alterá-lo na caixa de diálogo Configuração de Análise.
  2. WsLevel é definido na classe IBM(R), com.ibm.websphere.logging.WsLevel. Ele estende java.util.logging.Level para fornecer níveis de log adicionais. Se não desejar usar os níveis definidos pelo WsLevel, também será possível configurar esses mapeamentos na caixa de diálogo Configuração de Análise sob esta regra do Tomcat Java.
  3. Nem todos os métodos LogFactory são migrados. Você pode fazer com que a migração manual adicional seja executada depois que os métodos básicos de criação de log forem migrados. Avalie qualquer uso adicional dos métodos LogFactory em seu aplicativo.
  4. Os métodos na classe org.apache.juli.logging.Log têm parâmetros de tipo java.lang.Object. Os métodos na classe java.util.logging.Logger têm parâmetros de tipo java.lang.String. Se você usar parâmetros com tipos diferentes de java.lang.String, poderá precisar executar a migração manual adicional para incluir toString() nos parâmetros após executar a correção rápida para migrar de org.apache.juli.logging.Log para java.util.logging.Logger.

Para obter informações adicionais, consulte a documentação Java a seguir: