diff options
author | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-08-26 15:33:04 +0200 |
---|---|---|
committer | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-08-26 15:36:51 +0200 |
commit | b612d671bdf74f112fc02bd9f39fb0e4b1aec501 (patch) | |
tree | bb0fd88aba2bec5505e13b5eec6e2a16792a0deb /src | |
parent | 34adf17296b8f2252eb9b3274c62f40a9d18ae81 (diff) | |
download | moa-zs-b612d671bdf74f112fc02bd9f39fb0e4b1aec501.tar.gz moa-zs-b612d671bdf74f112fc02bd9f39fb0e4b1aec501.tar.bz2 moa-zs-b612d671bdf74f112fc02bd9f39fb0e4b1aec501.zip |
Log Incoming And Outgoing Messages with CXF Logging Interceptors
- Add loggin dependency.
- Enable Message Logging for Services and Clients.
- Add message logging config + examples to application.yaml
Diffstat (limited to 'src')
4 files changed, 30 insertions, 3 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/client/ClientFactory.java b/src/main/java/at/gv/egiz/moazs/client/ClientFactory.java index 818c4c9..f173467 100644 --- a/src/main/java/at/gv/egiz/moazs/client/ClientFactory.java +++ b/src/main/java/at/gv/egiz/moazs/client/ClientFactory.java @@ -9,7 +9,10 @@ import at.gv.zustellung.app2mzs.xsd.KeyStoreType; import at.gv.zustellung.app2mzs.xsd.SSLType; import org.apache.cxf.configuration.jsse.TLSClientParameters; import org.apache.cxf.endpoint.Client; +import org.apache.cxf.ext.logging.LoggingInInterceptor; +import org.apache.cxf.ext.logging.LoggingOutInterceptor; import org.apache.cxf.frontend.ClientProxy; +import org.apache.cxf.interceptor.Interceptor; import org.apache.cxf.jaxws.JaxWsClientFactoryBean; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.apache.cxf.message.Message; @@ -37,6 +40,10 @@ public class ClientFactory { private final FileUtils fileUtils; private final ConfigUtil configUtil; + private static final Interceptor<Message> LOGGING_IN_INTERCEPTOR = new LoggingInInterceptor(); + private static final Interceptor<Message> LOGGING_OUT_INTERCEPTOR = new LoggingOutInterceptor(); + + @Autowired public ClientFactory(StoreSOAPBodyBinaryInRepositoryInterceptor storeResponseInterceptor, SSLContextCreator creator, @@ -62,6 +69,7 @@ public class ClientFactory { factory.setServiceClass(clazz); factory.setAddress(params.getURL()); factory.getInInterceptors().add(storeResponseInterceptor); + setupLoggingInterceptors(factory); var proxy = new JaxWsProxyFactoryBean(factory).create(); Client client = ClientProxy.getClient(proxy); @@ -88,6 +96,13 @@ public class ClientFactory { return ((T)proxy); } + private void setupLoggingInterceptors(JaxWsClientFactoryBean factory) { + factory.getInInterceptors().add(LOGGING_IN_INTERCEPTOR); + factory.getInFaultInterceptors().add(LOGGING_IN_INTERCEPTOR); + factory.getOutInterceptors().add(LOGGING_OUT_INTERCEPTOR); + factory.getOutFaultInterceptors().add(LOGGING_OUT_INTERCEPTOR); + } + private TLSClientParameters setupTLSParams(SSLType ssl) { var tlsParams = new TLSClientParameters(); diff --git a/src/main/java/at/gv/egiz/moazs/service/MsgService.java b/src/main/java/at/gv/egiz/moazs/service/MsgService.java index 9f94cb3..1144d17 100644 --- a/src/main/java/at/gv/egiz/moazs/service/MsgService.java +++ b/src/main/java/at/gv/egiz/moazs/service/MsgService.java @@ -18,6 +18,7 @@ import static java.util.concurrent.CompletableFuture.runAsync; @Service @SchemaValidation(type = SchemaValidation.SchemaValidationType.BOTH) +@org.apache.cxf.feature.Features (features = "org.apache.cxf.ext.logging.LoggingFeature") public class MsgService implements Zuse2AppPort { private final DeliveryRepository repository; diff --git a/src/main/java/at/gv/egiz/moazs/service/MzsService.java b/src/main/java/at/gv/egiz/moazs/service/MzsService.java index 8b5d697..a0e6248 100644 --- a/src/main/java/at/gv/egiz/moazs/service/MzsService.java +++ b/src/main/java/at/gv/egiz/moazs/service/MzsService.java @@ -27,6 +27,7 @@ import static java.util.concurrent.CompletableFuture.supplyAsync; @Service @SchemaValidation(type = SchemaValidation.SchemaValidationType.BOTH) +@org.apache.cxf.feature.Features (features = "org.apache.cxf.ext.logging.LoggingFeature") public class MzsService implements App2MzsPortType { private static final Logger log = LoggerFactory.getLogger(MzsService.class); diff --git a/src/test/resources/config/application.yaml b/src/test/resources/config/application.yaml index 110d9d8..bd864a2 100644 --- a/src/test/resources/config/application.yaml +++ b/src/test/resources/config/application.yaml @@ -13,8 +13,18 @@ logging: SignatureVerifier: DEBUG LogResponseSink: INFO - at.gv.egiz.moazs.backend.SaveResponseToFileSink: TRACE - at.gv.egiz.moazs.SaveResponseToFileSinkTest: TRACE + # Incoming and outgoing messages are logged to INFO. + # Log all Incoming / Outgoing Messages. + #org.apache.cxf.services : INFO + + # Fine tune logging of messages per service / client: + # Format: <service namespace>.<ServiceName>.<type> + # Examples: + #org.apache.cxf.services.app2mzsPortType.REQ_IN : INFO + #org.apache.cxf.services.app2mzsPortType.RESP_OUT : INFO + #org.apache.cxf.services.App2ZusePort.REQ_OUT : INFO + #org.apache.cxf.services.App2ZusePort.RESP_IN: INFO + # More information: https://codenotfound.com/apache-cxf-logging-soap-request-response-fault-messages-example.html # Mandatory # Default type for java's ssl key/trust store. When in doubt, set to @@ -105,7 +115,7 @@ delivery-request-configuration-profiles: path: /msg-responses/ # Mandatory - # Log response to the at.gv.egiz.moazs.backend.LogResponseSink Logger. + # Log response to the at.gv.egiz.moazs.backend.LogResponseSink Logger, level INFO log-response: true # Mandatory |