Logging Log4J avec CXF

Cette page a été rédigée il y a fort fort longtemps, et n'a pas tellement été mise à jour.

 

Vous savez, moi je ne crois pas qu'il y ait de bonne ou de mauvaise page. Moi, si je devais résumer mon wiki aujourd'hui avec vous, je dirais que c'est d'abord des rencontres. Des gens qui m'ont tendu la main, peut-être à un moment où je ne pouvais pas, où j'étais seul chez moi. Et c'est assez curieux de se dire que les hasards, les rencontres forgent une destinée... Parce que quand on a le goût de la chose, quand on a le goût de la chose bien faite, le beau geste, parfois on ne trouve pas l'interlocuteur en face je dirais, le miroir qui vous aide à avancer. Alors ça n'est pas mon cas, comme je disais là, puisque moi au contraire, j'ai pu ; et je dis merci au wiki, je lui dis merci, je chante le wiki, je danse le wiki... je ne suis qu'amour ! Et finalement, quand des gens me disent « Mais comment fais-tu pour avoir cette humanité ? », je leur réponds très simplement que c'est ce goût de l'amour, ce goût donc qui m'a poussé aujourd'hui à entreprendre une construction logicielle... mais demain qui sait ? Peut-être simplement à me mettre au service de la communauté, à faire le don, le don de soi.

Dans sa configuration par défaut, Apache CXF utilise le système de trace du JDK (java.util.logging). Comme je l’ai déjà fait pour Tomcat, je préfère utiliser Log4J , voire LogBack lorsque c’est possible. Ici, nous verrons comment il est possible d’orienter facilement les traces de CXF vers Log4J.

Intégration par fichier XML

La première solution consiste à ajouter un fichier META-INF/cxf/org.apache.cxf.Logger dans un endroit accessible par un classloader. Cet endroit peut être la racine d’un fichier jar ou ear, ou le répertoire WEB-INF/classes/ d’un fichier war (ce qui donne un fichier WEB-INF/classes/META-INF/cxf/org.apache.cxf.Logger !). Ce fichier ne contient qu’une ligne qui contient le nom qualifié de la bonne classe de logger :

 # META-INF/cxf/org.apache.cxf.Logger
 org.apache.cxf.common.logging.Log4jLogger

Intégration par variable d’environnement

Une solution plus simple encore, et moins intrusive que la solution précédente, consiste à ajouter une variable d’environnement Java au lancement du programme qui utilise CXF, soit en paramètre du programme, soit, pour JBoss ou Tomcat, en variable JAVA_OPTS :

 JAVA_OPTS=-Dorg.apache.cxf.Logger=org.apache.cxf.common.logging.Log4jLogger

Le défaut de cette solution, c’est que la modification n’est pas intégrée à l’application elle-même, mais à un script elle-même, ce qui peut être gênant dans le cas d’une application JavaEE.

Remarque : cette solution a été testée avec CXF 2.