Comment log Apache CXF Savon de Demande et de Réponse Soap utilisation de Log4j?
Je suis en utilisant Apache CXF Cadre.
À l'intérieur de mon programme client, j'ai besoin de vous connecter CXF SAVON Requêtes et Réponses SOAP.
Lorsque j'ai utilisé
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress(host);
factory.setServiceClass(MyService.class);
factory.getInInterceptors().add(new LoggingInInterceptor());
factory.getOutInterceptors().add(new LoggingOutInterceptor());
J'ai eu ces SAVON Demande et Réponses SOAP dans la console:
Nov 9, 2011 6:48:01 PM org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose
INFO: Outbound Message
---------------------------
ID: 2
Encoding: UTF-8
Content-Type: text/xml
Headers: {}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns4:MYResponse
--------------------------------------
Mais mon besoin est, au lieu de les imprimer à la console du serveur, j'ai besoin de les avoir à l'intérieur du fichier journal.
Lorsque j'ai utilisé log4j directement comme indiqué
log4j(factory.getInInterceptors().add(new LoggingInInterceptor()));
log4j(factory.getOutInterceptors().add(new LoggingOutInterceptor()));
Il est seulement l'impression true
et true
à l'intérieur du fichier journal.
Quelqu'un pourrait-il s'il vous plaît laissez-moi savoir comment configurer cela?
- Le même problème a été discuté ici: stackoverflow.com/questions/4592422/...
Vous devez vous connecter pour publier un commentaire.
Vous devez créer un fichier nommé
org.apache.cxf.Logger
(qui est:org.apache.cxf
fichier avecLogger
extension) sous/META-INF/cxf/
avec le contenu suivant:Référence: Utilisation de Log4j au Lieu de java.util.la journalisation.
Aussi, si vous remplacer la norme:
avec beaucoup plus de commentaires:
Apache CXF sera assez imprimer des messages XML de les mettre en forme avec une bonne indentation et les sauts de ligne. Très utile. Plus ici.
/cxf
dossier dans/META-INF
et placer un fichier nomméorg.apache.cxf
fichier avecLogger
extension de là. Voir aussi mes mises à jour.org.apache.cxf
avecLogger
extension. Aussi loin que je peux voir que vous avez créé un fichier\META-INF\cxf\org\apache\cxf\Logger.class
plutôt que\META-INF\cxf\org.apache.cxf.Logger
. Je n'ai jamais dit que vous avez besoin de créer une structure de répertoire de\org\apache\cxf
. C'est le nom de fichier (maladroit, je dois l'avouer).log4j.properties
fichier. Mais c'est au-delà de la portée de cette question.org.apache.cxf
enregistreur est réglé surALL
ouDEBUG
.org.apache.cxf.Logger
fichier n'importe où. Et le fait d'avoir seulement<cxf:bus><cxf:features><cxf:logging/></cxf:features></cxf:bus>
dans mon haricot config imprime des messages avec une mise en forme (mais je sais que la réponse est de 2 ans).Un autre moyen facile est de mettre l'enregistreur de données comme celle - ci, s'assurer que vous le faites avant de vous charger de la cxf service web classes associées. Vous pouvez l'utiliser dans certains blocs statiques.
Puis les messages entrants et sortants seront imprimés à Log4j fichier au lieu de la console. Assurez-vous que votre log4j est configuré correctement
AbstractLoggingInterceptor.setPrettyLogging(true)
Façon la plus simple d'obtenir assez de journalisation dans Preethi Jain szenario:
Dans votre printemps contexte de la configuration ci-dessous se connecte à la demande et de la réponse soap message vocal.
Cela a fonctionné pour moi.
De configuration log4j comme d'habitude. Ensuite, utilisez ce code:
Lors de la configuration de
log4j.properties
, mettreorg.apache.cxf
niveau de journalisation pourINFO
suffit de voir la plaine des messages SOAP:De DÉBOGAGE est trop verbeux.
TRACE [http-8080-1] [org.apache.cxf.service.invoker.AbstractInvoker] Invoking method ...
mais c'est trop tard, parce que lors de l'analyse d'échec de la demande n'est pas connecté à tous les...Essayez ce code:
À l'intérieur de la
logback.xml
vous avez besoin de mettre le nom de l'interface webservice:cxf.xml
org.apache.cxf.Enregistreur de
Veuillez vérifier capture d'écran ici
Dans le cas où quelqu'un veut le faire, à l'aide de Play Framework (et à l'aide de LogBack http://logback.qos.ch/), vous pouvez configurer l'application-logger.xml avec cette ligne:
Pour moi, ça a fait l'affaire 😉