Ne pas utiliser la classe org.apache.juli.logging d'Apache Tomcat j

Cette règle détecte l'utilisation des méthodes et des classes org.apache.juli.logging.Log et org.apache.juli.logging.LogFactory. Ces méthodes de consignation ne sont pas disponibles dans WebSphere Traditional ou Liberty et doivent être migrées.

Un correctif rapide est disponible dans le scanner de source. Il remplace org.apache.juli.logging.LogFactory par java.util.logging.Logger. Il remplace également les méthodes de consignation d'Apache Tomcat par la méthode Java Logger.log(Level, message).

Certaines méthodes d'Apache Tomcat sont directement mappées vers une méthode java.util.logging.Level particulière. Pour les niveaux qui ne sont pas mappés directement, vous pouvez personnaliser le niveau de consignation dans la boîte de dialogue Analysis Configuration. De plus, le correctif rapide met à jour les instructions d'importation des classes.

Les remplacements effectués par le correctif rapide sont répertoriés dans la table de mappage ci-dessous. Les méthodes de consignation qui transmettent un élément Throwable comme deuxième paramètre sont mappées de la même façon que leurs homologues dans la table ci-après.

Méthode org.apache.juli.logging Méthode java.util.logging Configurable
LogFactory.getLog(Class.class) Logger.getLogger(Class.class.getName()) Non
LogFactory.getLog("log name") Logger.getLogger("log name") Non
LogFactory.getInstance(Class.class) Logger.getLogger(Class.class.getName()) Non
LogFactory.getInstance("log name") Logger.getLogger("log name") Non
Log.fatal("mgs") Logger.log(WsLevel.FATAL, "msg") Oui
Log.error("msg") Logger.log(Level.SEVERE, "msg") Oui
Log.warn("msg") Logger.log(Level.WARNING, "msg") Non
Log.info("msg") Logger.log(Level.INFO, "msg") Non
Log.debug("msg") Logger.log(WsLevel.DETAIL, "msg") Oui
Log.trace("msg") Logger.log(Level.FINE, "msg") Oui

Par exemple, la création d'une instance de classe de journal :

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

est migré vers
Logger log = Logger.getLogger(MyClass.class.getName());

L'exemple ci-après illustre un appel d'org.apache.juli.logging.Log.error() avec un élément Throwable comme deuxième paramètre.

catch (Exception e) {
log.error("Un message d'erreur", e);
}

Il est migré vers le code suivant :
catch (Exception e) {
log.log(Level.SEVERE, "Un message d'erreur", e);
}


Remarques :
  1. Certaines migrations de méthode de consignation peuvent être configurées. Par exemple, si vous voulez que la méthode Log.trace soit migrée vers un niveau autre que WsLevel.DETAIL, vous pouvez changer ce paramètre dans la boîte de dialogue Analysis Configuration.
  2. WsLevel est défini dans la classe IBM com.ibm.websphere.logging.WsLevel. Il étend java.util.logging.Level afin de fournir des niveaux de consignation supplémentaires. Si vous ne voulez pas utiliser les niveaux définis par WsLevel, vous pouvez aussi configurer ces mappages dans la boîte de dialogue Analysis Configuration sous cette règle Java Tomcat.
  3. Sachez que toutes les méthodes LogFactory sont migrées. Il se peut que vous deviez procéder à des étapes de migration manuelle supplémentaires après la migration des méthodes de consignation de base. Estimez toute utilisation supplémentaire des méthodes LogFactory dans votre application.
  4. Les méthodes de la classe org.apache.juli.logging.Log possèdent des paramètres du type java.lang.Object. Les méthodes de la classe java.util.logging.Logger possèdent des paramètres du type java.lang.String. Si vous utilisez des paramètres avec des types autres que java.lang.String, vous devrez peut-être effectuer une migration manuelle supplémentaire pour ajouter toString() aux paramètres après l'exécution du correctif rapide pour migrer de org.apache.juli.logging.Log vers java.util.logging.Logger.

Pour plus d'informations, voir la documentation Java suivante :