Я сгенерировал свою службу, используя CXF 3.1 wsdl2java, поэтому нет cxf.xml.CXF 3.1 wsdl2java logging with Log4j2
Я пытаюсь добавить XML-запрос и ответ для службы в мою установку log4j2. Существует много противоречивой информации из-за изменений в версии и т. Д. Мой файл журнала запроса/ответа xml CXF всегда пуст.
Это было ближе всего к моей установке: How to log CXF webservice requests with log4j2?
Так что я следующий в моем log4j2.xml
<logger name="org.apache.cxf" additivity="false" level="info">
<AppenderRef ref="APP_LOG_FILE"/>
</logger>
<logger name="org.apache.cxf.interceptor.LoggingInInterceptor" additivity="false" level="info">
<AppenderRef ref="WS_LOG_FILE" />
</logger>
<logger name="org.apache.cxf.interceptor.LoggingOutInterceptor" additivity="false" level="info">
<AppenderRef ref="WS_LOG_FILE" />
</logger>
Не показывая appenders, но они там, APP_LOG_FILE заселена, но Файлы-приложения WS_LOG_FILE всегда пусты, а обмен сообщениями.
Я добавил META-INF/CXF/org.apache.cxf.Logger файл с этим содержанием
org.apache.cxf.common.logging.Slf4jLogger
Я также попытался с помощью дополнительного параметра командной строки при запуске моей банки в качестве альтернативы CXF .Logger файл:
-Dorg.apache.cxf.Logger=org.apache.cxf.common.logging.Slf4jLogger
Я добавил дополнительную зависимость:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.0</version>
</dependency>
Я попытался п (как они нужны или альтернативы конфигурации в log4j2.xml?) и без них, как показано в настоящее время в комментариях.
GetComparisonDecisionService equinitiComparisonService = new GetComparisonDecisionService();
GetComparisonDecisionInterface comparison = equinitiComparisonService.getGetComparisonDecision();
/*
Client client = ClientProxy.getClient(equinitiComparisonService.getPort(GetComparisonDecisionInterface.class));
client.getInInterceptors().add(new LoggingInInterceptor());
client.getOutInterceptors().add(new LoggingOutInterceptor());
*/
GetComparisonDecisionCallParameter comparisonDecisionCallParameter = new GetComparisonDecisionCallParameter();
comparisonDecisionCallParameter.setSecurityToken(token);
comparisonDecisionCallParameter.setComparisonApplication(equinitiApp);
GetComparisonDecisionResponseParameter eqDescn = comparison.getComparisonDecision(comparisonDecisionCallParameter);
У меня закончились идеи на этом этапе. Документация cxf очень краткая.
Настройка параметров LoggingInterceptors, как показано в последнем фрагменте кода, рекомендуется для CXF <3.1. Вы должны использовать '@ Feature'-Annotation следующим образом:' @Features (features = "org.apache.cxf.feature.LoggingFeature") '. – Frank
Это сработало. Но интересно, что с помощью wdsl2java вы создаете класс, который затем нуждается в ручном редактировании, чтобы добавить аннотацию @Features, необходимую для регистрации. Частично побеждает цель генерации кода клиента SOAP. Жаль, что я не могу отметить комментарий в качестве правильного ответа ... – csDave