0

Je suis en train de mettre à niveau une application Spring MVC de Spring 3.1 à 4.3, et Hibernate 3.6 à 5.2. Je vais le faire dans Wildfly 8. Les dépendances sont gérées par Maven.Application utilisant jboss-logging lorsqu'elle doit utiliser log4j

Spring utilise commons-logging, qui examine le chemin de classe de l'application et tente de choisir un cadre de journalisation approprié. Dans mon cas, il semble choisir le mauvais. J'ai inclus log4j dans mon pom.xml, et en vérifiant la hiérarchie de dépendance je peux voir que jboss-logging n'est pas là. Voici le message d'erreur que je reçois:

Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf 

Donc, même si je n'ai pas l'exploitation forestière jboss dans mon projet, commons-logging est de trouver quelque part et essayer de l'utiliser, mais sans succès. Après quelques recherches, j'ai trouvé jboss-logging-3.1.4.GA.jar dans Wildfly.

La raison de l'erreur est qu'il s'agit d'une ancienne version de jboss-logging. J'ai ajouté un fichier jar plus récent au serveur et j'ai édité module.xml pour y faire référence, et l'erreur s'est dissipée. Cela prouve que la journalisation des communs trouve jboss-logging sur le serveur.

Le problème est que je ne veux pas jboss-logging, je veux log4j. Comment puis-je forcer l'utilisation de log-us et ignorer ce qui est sur le serveur?

Edit: Je suivi le lien chrisharm mis en place et a ajouté ces lignes dans le fichier standalone.xml:

<add-logging-api-dependencies value="false"/> 
<use-deployment-logging-config value="false"/> 

J'ai aussi changé le module.xml pour pointer vers nouveau le pot plus, depuis que je préfère voir une erreur si jboss est utilisé. Quand je lance maintenant je reçois ceci:

Caused by: java.lang.NoClassDefFoundError: org/jboss/logging/Logger 

Cela peut être un pas dans la bonne direction, puisque maintenant Spring n'a pas accès à jboss-exploitation forestière, mais il est encore en train de l'utiliser pour une raison quelconque.

Répondre

1

https://docs.jboss.org/author/display/WFLY8/How+To#HowTo-HowdoIusemyownversionoflog4j%3F

Si vous avez besoin/vouloir inclure votre version de log4j alors vous devez faire les deux étapes suivantes.

  1. Désactiver l'ajout de dépendances de journalisation à tous vos déploiements avec les add-logging-api-dépendances d'attributs et de désactiver l'attribut utiliser la journalisation-déploiement-config ou exclure le sous-système d'enregistrement dans un jboss déploiement structure .xml. Puis, vous devez inclure une bibliothèque log4j dans votre déploiement.

Cela fonctionne uniquement pour la connexion à votre déploiement. Les journaux du serveur continueront à utiliser la configuration du sous-système de journalisation.