Author: buildbot
Date: Tue Jul 2 11:57:26 2019
New Revision: 1047092
Log:
Production update by buildbot for cxf
Modified:
websites/production/cxf/content/cache/docs.pageCache
websites/production/cxf/content/docs/message-logging.html
Modified: websites/production/cxf/content/cache/docs.pageCache
==============================================================================
Binary files - no diff available.
Modified: websites/production/cxf/content/docs/message-logging.html
==============================================================================
--- websites/production/cxf/content/docs/message-logging.html (original)
+++ websites/production/cxf/content/docs/message-logging.html Tue Jul 2
11:57:26 2019
@@ -99,15 +99,7 @@ Apache CXF -- Message Logging
<div id="wrapper-menu-page-bottom">
<div id="menu-page">
<!-- NavigationBar -->
-<div id="navigation"><ul class="alternate"><li><a shape="rect"
href="overview.html">Overview</a></li><li><a shape="rect"
href="how-tos.html">How-Tos</a></li><li><a shape="rect"
href="frontends.html">Frontends</a></li><li><a shape="rect"
href="databindings.html">DataBindings</a></li><li><a shape="rect"
href="transports.html">Transports</a></li><li><a shape="rect"
href="configuration.html">Configuration</a></li><li><a shape="rect"
href="debugging-and-logging.html">Debugging and Logging</a></li><li><a
shape="rect" href="tools.html">Tools</a></li><li><a shape="rect"
href="restful-services.html">RESTful Services</a></li><li><a shape="rect"
href="wsdl-bindings.html">WSDL Bindings</a></li><li><a shape="rect"
href="service-routing.html">Service Routing</a></li><li><a shape="rect"
href="dynamic-languages.html">Dynamic Languages</a></li><li><a shape="rect"
href="ws-support.html">WS-* Support</a></li><li><a shape="rect"
href="advanced-integration.html">Advanced Integration</a></li><li><a shape
="rect" href="deployment.html">Deployment</a></li><li><a shape="rect"
href="schemas-and-namespaces.html">Use of Schemas and
Namespaces</a></li></ul><hr><ul
class="alternate"><li><p>Search</p></li></ul><form
enctype="application/x-www-form-urlencoded" method="get" id="cse-search-box"
action="http://www.google.com/cse">
- <div>
- <input type="hidden" name="cx" value="002890367768291051730:o99qiwa09y4">
- <input type="hidden" name="ie" value="UTF-8">
- <input type="text" name="q" size="21">
- <input type="submit" name="sa" value="Search">
- </div>
-</form>
-<script type="text/javascript"
src="http://www.google.com/cse/brand?form=cse-search-box&lang=en"></script><hr><ul
class="alternate"><li><a shape="rect"
href="http://cxf.apache.org/javadoc/latest/">API 3.2.x (Javadoc)</a></li><li><a
shape="rect" href="http://cxf.apache.org/javadoc/latest-3.1.x/">API 3.1.x
(Javadoc)</a></li><li><a shape="rect" href="http://cxf.apache.org/">CXF
Website</a></li></ul><p> </p><p><a shape="rect" class="external-link"
href="http://www.apache.org/events/current-event.html"><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.apache.org/events/current-event-125x125.png"
data-image-src="http://www.apache.org/events/current-event-125x125.png"></span></a></p></div>
+<div id="navigation"><ul class="alternate"><li><a shape="rect"
href="overview.html">Overview</a></li><li><a shape="rect"
href="how-tos.html">How-Tos</a></li><li><a shape="rect"
href="frontends.html">Frontends</a></li><li><a shape="rect"
href="databindings.html">DataBindings</a></li><li><a shape="rect"
href="transports.html">Transports</a></li><li><a shape="rect"
href="configuration.html">Configuration</a></li><li><a shape="rect"
href="debugging-and-logging.html">Debugging and Logging</a></li><li><a
shape="rect" href="tools.html">Tools</a></li><li><a shape="rect"
href="restful-services.html">RESTful Services</a></li><li><a shape="rect"
href="wsdl-bindings.html">WSDL Bindings</a></li><li><a shape="rect"
href="service-routing.html">Service Routing</a></li><li><a shape="rect"
href="dynamic-languages.html">Dynamic Languages</a></li><li><a shape="rect"
href="ws-support.html">WS-* Support</a></li><li><a shape="rect"
href="advanced-integration.html">Advanced Integration</a></li><li><a shape
="rect" href="deployment.html">Deployment</a></li><li><a shape="rect"
href="schemas-and-namespaces.html">Use of Schemas and
Namespaces</a></li></ul><hr><ul
class="alternate"><li><p>Search</p></li></ul><div class="aui-message
aui-message-error"><p class="title"><strong>Error rendering macro
'html'</strong></p><p>Your Confluence administrator has disallowed the use of
Javascript in the HTML macro. This setting can be changed using HTML for
Confluence Configuration. Please see your administrator for
details.</p></div><hr><ul class="alternate"><li><a shape="rect"
href="http://cxf.apache.org/javadoc/latest/">API 3.2.x (Javadoc)</a></li><li><a
shape="rect" href="http://cxf.apache.org/javadoc/latest-3.1.x/">API 3.1.x
(Javadoc)</a></li><li><a shape="rect" href="http://cxf.apache.org/">CXF
Website</a></li></ul><p> </p><p><a shape="rect" class="external-link"
href="http://www.apache.org/events/current-event.html"><span
class="confluence-embedded-file-wrapper"><img class="confluence-em
bedded-image confluence-external-resource"
src="http://www.apache.org/events/current-event-125x125.png"
data-image-src="http://www.apache.org/events/current-event-125x125.png"></span></a></p></div>
<!-- NavigationBar -->
</div>
</div>
@@ -118,23 +110,23 @@ Apache CXF -- Message Logging
<!-- Content -->
<div class="wiki-content">
<div id="ConfluenceContent"><div class="container" title="Hint: double-click
to select code"><p>Since CXF 3.1 the message logging code was moved into a
separate module and gathered some new features.</p><ul><li>Auto logging for
existing CXF endpoints and clients</li><li>Uses slf4j MDC to log meta data
separately</li><li>Adds meta data for Rest calls</li><li>Adds MD5 message id
and exchange id for correlation</li><li>Simple interface for writing your own
appenders</li></ul><h2 id="MessageLogging-ManualUsage">Manual Usage</h2><div
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>CXF
LoggingFeature</b></div><div class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"> <jaxws:endpoint ...>
+<pre class="brush: xml; gutter: false; theme: Default"> <jaxws:endpoint
...>
<jaxws:features>
<bean class="org.apache.cxf.ext.logging.LoggingFeature"/>
</jaxws:features>
</jaxws:endpoint></pre>
-</div></div><p>The LoggingFeature can be used with JAXWS as well JAXRS
Endpoints and Clients. It can also be specified using the @Features annotation.
The feature should be used instead of adding the LoggingIn/OutInterceptors
manually.</p><h2 id="MessageLogging-Properties">Properties</h2><p>The following
properties can be set on the LoggingFeature:</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh">Property</th><th colspan="1" rowspan="1"
class="confluenceTh">Explanation</th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">limit</td><td colspan="1" rowspan="1"
class="confluenceTd">The size limit at which messages are truncated in the log.
The default is 48 * 1024.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">inMemThreshold</td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Size limit when messages are written to disk. The
default is -1, which means do not write to disk.</p></td></tr><tr
><td colspan="1" rowspan="1" class="confluenceTd">prettyLogging</td><td
>colspan="1" rowspan="1" class="confluenceTd">For XML content, turn on pretty
>printing in the logs. The default is false.</td></tr><tr><td colspan="1"
>rowspan="1" class="confluenceTd">logBinary</td><td colspan="1" rowspan="1"
>class="confluenceTd">Log binary payloads by default. The default is
>false.</td></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd">logMultipart</td><td colspan="1" rowspan="1"
>class="confluenceTd">Log multipart payloads by default. The default is
>true.</td></tr></tbody></table></div><p> </p><h2
>id="MessageLogging-Slf4jMDCvaluesformetadata">Slf4j MDC values for meta
>data</h2><p>This is the raw logging information you get for a SOAP
>call:</p><div class="table-wrap"><table
>class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
>class="confluenceTh">Field</th><th colspan="1" rowspan="1"
>class="confluenceTh">Value</th></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd">@ti
mestamp</td><td colspan="1" rowspan="1"
class="confluenceTd">2015-06-08T14:43:27,097Z</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">MDC.address</td><td colspan="1" rowspan="1"
class="confluenceTd"><a shape="rect" class="external-link"
href="http://localhost:8181/cxf/personService"
rel="nofollow">http://localhost:8181/cxf/personService</a></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><a shape="rect"
class="external-link" href="http://MDC.bundle.id"
rel="nofollow">MDC.bundle.id</a></td><td colspan="1" rowspan="1"
class="confluenceTd">90</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><a shape="rect" class="external-link"
href="http://MDC.bundle.name" rel="nofollow">MDC.bundle.name</a></td><td
colspan="1" rowspan="1"
class="confluenceTd">org.apache.cxf.cxf-rt-features-logging</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">MDC.bundle.version</td><td
colspan="1" rowspan="1" class="confluenceTd">3.1.0</td></tr><tr><td colspan="
1" rowspan="1" class="confluenceTd">MDC.content-type</td><td colspan="1"
rowspan="1" class="confluenceTd">text/xml; charset=UTF-8</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">MDC.encoding</td><td colspan="1"
rowspan="1" class="confluenceTd">UTF-8</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">MDC.exchangeId</td><td colspan="1" rowspan="1"
class="confluenceTd">56b037e3-d254-4fe5-8723-f442835fa128</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">MDC.headers</td><td colspan="1"
rowspan="1" class="confluenceTd">{content-type=text/xml; charset=UTF-8,
connection=keep-alive, Host=localhost:8181, Content-Length=251, SOAPAction="",
User-Agent=Apache CXF 3.1.0, Accept=*/*, Pragma=no-cache,
Cache-Control=no-cache}</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">MDC.httpMethod</td><td colspan="1" rowspan="1"
class="confluenceTd">POST</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">MDC.messageId</td><td colspan="1" rowspan=
"1" class="confluenceTd">a46eebd2-60af-4975-ba42-8b8205ac884c</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">MDC.portName</td><td colspan="1"
rowspan="1" class="confluenceTd">PersonServiceImplPort</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">MDC.portTypeName</td><td
colspan="1" rowspan="1" class="confluenceTd">PersonService</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">MDC.serviceName</td><td
colspan="1" rowspan="1"
class="confluenceTd">PersonServiceImplService</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">MDC.type</td><td colspan="1" rowspan="1"
class="confluenceTd">REQ_IN</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">level</td><td colspan="1" rowspan="1"
class="confluenceTd">INFO</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">loc.class</td><td colspan="1" rowspan="1"
class="confluenceTd">org.apache.cxf.ext.logging.slf4j.Slf4jEventSender</td></tr><tr><td
colspan="1" rowspan="1" class="con
fluenceTd">loc.file</td><td colspan="1" rowspan="1"
class="confluenceTd">Slf4jEventSender.java</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">loc.line</td><td colspan="1" rowspan="1"
class="confluenceTd">55</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">loc.method</td><td colspan="1" rowspan="1"
class="confluenceTd">send</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">loggerClass</td><td colspan="1" rowspan="1"
class="confluenceTd">org.ops4j.pax.logging.slf4j.Slf4jLogger</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">loggerName</td><td colspan="1"
rowspan="1"
class="confluenceTd">org.apache.cxf.services.PersonService.REQ_IN</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">message</td><td colspan="1"
rowspan="1" class="confluenceTd"><soap:Envelope xmlns:soap="<a shape="rect"
class="external-link"
href="http://schemas.xmlsoap.org/soap/envelope/%22%3E%3Csoap:Body%3E%3Cns2:getAll"
rel="nofollow">http://schemas.xm
lsoap.org/soap/envelope/"><soap:Body><ns2:getAll</a> xmlns:ns2="<a
shape="rect" class="external-link"
href="http://model.personservice.cxf.karaf.tutorial.lr.net/%22"
rel="nofollow">http://model.personservice.cxf.karaf.tutorial.lr.net/"</a>;
xmlns:ns3="<a shape="rect" class="external-link"
href="http://person.jms2rest.camel.karaf.tutorial.lr.net%22/%3E%3C/soap:Body%3E%3C/soap:Envelope%3E"
rel="nofollow">http://person.jms2rest.camel.karaf.tutorial.lr.net"/></soap:Body></soap:Envelope></a>;</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">threadName</td><td colspan="1"
rowspan="1" class="confluenceTd">qtp80604361-78</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">timeStamp</td><td colspan="1" rowspan="1"
class="confluenceTd">1433774607097</td></tr></tbody></table></div><p><br
clear="none">A lot of the details are in the MDC values which are by default
normally not displayed in the log file. You need to change your pax logging
config
to make these visible.ogged or log some services to another file.</p><h2
id="MessageLogging-Enablling/disablingloggingbychangingtheloggerconfig">Enablling
/ disabling logging by changing the logger config</h2><p>The logger name is
"<service namespace>.<ServiceName>.<type>". In the karaf log
file it by default only shows the type but you can change this.</p><p>You can
use the logger name to fine tune which services you want to log this way. For
example set the debug level to WARN for noisy services to avoid that they are
logged.</p><h2 id="MessageLogging-Messageidandexchangeid">Message id and
exchange id</h2><p>The messageId allows to uniquely identify messages even if
they were collected from several servers. It is also transported over the wire
so a request sent on one machine can be correlated with the request received on
another machine.</p><p>The exchangeId will be the same for an incoming request
and the response sent out or on the other side for an outgoing
request and the response for it. This allows to correlate request and
responses and so follow the conversations.</p><h2
id="MessageLogging-Simpleinterfacetowritecustomappenders">Simple interface to
write custom appenders</h2><p>Write a custom <a shape="rect"
class="external-link"
href="https://github.com/apache/cxf/blob/master/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/event/LogEventSender.java"
rel="nofollow">LogSender</a> and set it on the <a shape="rect"
class="external-link"
href="https://github.com/apache/cxf/blob/master/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingFeature.java"
rel="nofollow">LoggingFeature</a> to do custom logging. All meta data can be
access from the class <a shape="rect" class="external-link"
href="https://github.com/apache/cxf/blob/master/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/event/LogEvent.java"
rel="nofollow">LogEvent</a>.</p><h2
id="MessageLogging-AutologgingforexistingCXFendpointsandclient
sinApacheKaraf">Auto logging for existing CXF endpoints and clients in Apache
Karaf</h2><p>To use the message logging in karaf it needs to be installed as a
feature. It can then be activated for all endpoints using a config.</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>Logging feature in
karaf</b></div><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Default"
style="font-size:12px;">feature:repo-add cxf 3.1.0
+</div></div><p>The LoggingFeature can be used with JAXWS as well JAXRS
Endpoints and Clients. It can also be specified using the @Features annotation.
The feature should be used instead of adding the LoggingIn/OutInterceptors
manually.</p><h2 id="MessageLogging-Properties">Properties</h2><p>The following
properties can be set on the LoggingFeature:</p><div class="table-wrap"><table
class="confluenceTable"><colgroup span="1"><col span="1"><col
span="1"></colgroup><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh">Property</th><th colspan="1" rowspan="1"
class="confluenceTh">Explanation</th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">limit</td><td colspan="1" rowspan="1"
class="confluenceTd">The size limit at which messages are truncated in the log.
The default is 48 * 1024.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">inMemThreshold</td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Size limit when messages are written to disk. The
default
is -1, which means do not write to disk.</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">prettyLogging</td><td colspan="1" rowspan="1"
class="confluenceTd">For XML content, turn on pretty printing in the logs. The
default is false.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">logBinary</td><td colspan="1" rowspan="1"
class="confluenceTd">Log binary payloads by default. The default is
false.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">logMultipart</td><td colspan="1" rowspan="1"
class="confluenceTd">Log multipart payloads by default. The default is
true.</td></tr></tbody></table></div><p><br clear="none"></p><h2
id="MessageLogging-Slf4jMDCvaluesformetadata">Slf4j MDC values for meta
data</h2><p>This is the raw logging information you get for a SOAP
call:</p><div class="table-wrap"><table class="confluenceTable"><colgroup
span="1"><col span="1"><col span="1"></colgroup><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh">Fie
ld</th><th colspan="1" rowspan="1" class="confluenceTh">Value</th></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">@timestamp</td><td colspan="1"
rowspan="1" class="confluenceTd">2015-06-08T14:43:27,097Z</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">MDC.address</td><td colspan="1"
rowspan="1" class="confluenceTd"><a shape="rect" class="external-link"
href="http://localhost:8181/cxf/personService"
rel="nofollow">http://localhost:8181/cxf/personService</a></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><a shape="rect"
class="external-link" href="http://MDC.bundle.id"
rel="nofollow">MDC.bundle.id</a></td><td colspan="1" rowspan="1"
class="confluenceTd">90</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><a shape="rect" class="external-link"
href="http://MDC.bundle.name" rel="nofollow">MDC.bundle.name</a></td><td
colspan="1" rowspan="1"
class="confluenceTd">org.apache.cxf.cxf-rt-features-logging</td></tr><tr><td
colspan="1" rowspan="1
" class="confluenceTd">MDC.bundle.version</td><td colspan="1" rowspan="1"
class="confluenceTd">3.1.0</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">MDC.content-type</td><td colspan="1" rowspan="1"
class="confluenceTd">text/xml; charset=UTF-8</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">MDC.encoding</td><td colspan="1" rowspan="1"
class="confluenceTd">UTF-8</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">MDC.exchangeId</td><td colspan="1" rowspan="1"
class="confluenceTd">56b037e3-d254-4fe5-8723-f442835fa128</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">MDC.headers</td><td colspan="1"
rowspan="1" class="confluenceTd">{content-type=text/xml; charset=UTF-8,
connection=keep-alive, Host=localhost:8181, Content-Length=251, SOAPAction="",
User-Agent=Apache CXF 3.1.0, Accept=*/*, Pragma=no-cache,
Cache-Control=no-cache}</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">MDC.httpMethod</td><td colspan="1" rowspan="1" cla
ss="confluenceTd">POST</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">MDC.messageId</td><td colspan="1" rowspan="1"
class="confluenceTd">a46eebd2-60af-4975-ba42-8b8205ac884c</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">MDC.portName</td><td colspan="1"
rowspan="1" class="confluenceTd">PersonServiceImplPort</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">MDC.portTypeName</td><td
colspan="1" rowspan="1" class="confluenceTd">PersonService</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">MDC.serviceName</td><td
colspan="1" rowspan="1"
class="confluenceTd">PersonServiceImplService</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">MDC.type</td><td colspan="1" rowspan="1"
class="confluenceTd">REQ_IN</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">level</td><td colspan="1" rowspan="1"
class="confluenceTd">INFO</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">loc.class</td><td colspan="1" rowspan
="1"
class="confluenceTd">org.apache.cxf.ext.logging.slf4j.Slf4jEventSender</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">loc.file</td><td colspan="1"
rowspan="1" class="confluenceTd">Slf4jEventSender.java</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">loc.line</td><td colspan="1"
rowspan="1" class="confluenceTd">55</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">loc.method</td><td colspan="1" rowspan="1"
class="confluenceTd">send</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">loggerClass</td><td colspan="1" rowspan="1"
class="confluenceTd">org.ops4j.pax.logging.slf4j.Slf4jLogger</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">loggerName</td><td colspan="1"
rowspan="1"
class="confluenceTd">org.apache.cxf.services.PersonService.REQ_IN</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">message</td><td colspan="1"
rowspan="1" class="confluenceTd"><soap:Envelope xmlns:soap="<a shape="rect"
class="ext
ernal-link"
href="http://schemas.xmlsoap.org/soap/envelope/%22%3E%3Csoap:Body%3E%3Cns2:getAll"
rel="nofollow">http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:getAll</a>
xmlns:ns2="<a shape="rect" class="external-link"
href="http://model.personservice.cxf.karaf.tutorial.lr.net/%22"
rel="nofollow">http://model.personservice.cxf.karaf.tutorial.lr.net/"</a>;
xmlns:ns3="<a shape="rect" class="external-link"
href="http://person.jms2rest.camel.karaf.tutorial.lr.net%22/%3E%3C/soap:Body%3E%3C/soap:Envelope%3E"
rel="nofollow">http://person.jms2rest.camel.karaf.tutorial.lr.net"/></soap:Body></soap:Envelope></a>;</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">threadName</td><td colspan="1"
rowspan="1" class="confluenceTd">qtp80604361-78</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">timeStamp</td><td colspan="1" rowspan="1"
class="confluenceTd">1433774607097</td></tr></tbody></table></div><p><br
clear="none">A lot of the detail
s are in the MDC values which are by default normally not displayed in the log
file. You need to change your pax logging config to make these visible.ogged or
log some services to another file.</p><h2
id="MessageLogging-Enablling/disablingloggingbychangingtheloggerconfig">Enablling
/ disabling logging by changing the logger config</h2><p>The logger name is
"<service namespace>.<ServiceName>.<type>". In the karaf log
file it by default only shows the type but you can change this.</p><p>You can
use the logger name to fine tune which services you want to log this way. For
example set the debug level to WARN for noisy services to avoid that they are
logged.</p><h2 id="MessageLogging-Messageidandexchangeid">Message id and
exchange id</h2><p>The messageId allows to uniquely identify messages even if
they were collected from several servers. It is also transported over the wire
so a request sent on one machine can be correlated with the request received on
another machine
.</p><p>The exchangeId will be the same for an incoming request and the
response sent out or on the other side for an outgoing request and the response
for it. This allows to correlate request and responses and so follow the
conversations.</p><h2
id="MessageLogging-Simpleinterfacetowritecustomappenders">Simple interface to
write custom appenders</h2><p>Write a custom <a shape="rect"
class="external-link"
href="https://github.com/apache/cxf/blob/master/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/event/LogEventSender.java"
rel="nofollow">LogEventSender</a> and set it on the <a shape="rect"
class="external-link"
href="https://github.com/apache/cxf/blob/master/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/LoggingFeature.java"
rel="nofollow">LoggingFeature</a> to do custom logging. All meta data can be
accessed from the class <a shape="rect" class="external-link"
href="https://github.com/apache/cxf/blob/master/rt/features/logging/src/main/java/org/apache/c
xf/ext/logging/event/LogEvent.java" rel="nofollow">LogEvent</a>.</p><h2
id="MessageLogging-AutologgingforexistingCXFendpointsandclientsinApacheKaraf">Auto
logging for existing CXF endpoints and clients in Apache Karaf</h2><p>To use
the message logging in karaf it needs to be installed as a feature. It can then
be activated for all endpoints using a config.</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>Logging feature in karaf</b></div><div
class="codeContent panelContent pdl">
+<pre class="brush: bash; gutter: false; theme: Default">feature:repo-add cxf
3.1.0
feature:install cxf-features-logging
config:property-set -p org.apache.cxf.features.logging enabled true</pre>
</div></div><p>Any CXF endpoints installed after the logging feature will
automatically be enhanced with the message logging feature.</p>By default then
all SOAP and Rest calls will be logged using slf4j. So the logging data will be
processed by pax logging and by default end up in your karaf log.<p>A log entry
looks like this:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Sample
Log entry</b></div><div class="codeContent panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Default"
style="font-size:12px;">2015-06-08 16:35:54,068 | INFO | qtp1189348109-73 |
REQ_IN | 90 - org.apache.cxf.cxf-rt-features-logging
- 3.1.0 | <soap:Envelope
+<pre class="brush: bash; gutter: false; theme: Default">2015-06-08
16:35:54,068 | INFO | qtp1189348109-73 | REQ_IN | 90
- org.apache.cxf.cxf-rt-features-logging - 3.1.0 | <soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:addPerson
xmlns:ns2="http://model.personservice.cxf.karaf.tutorial.lr.net/"
xmlns:ns3="http://person.jms2rest.camel.karaf.tutorial.lr.net"><arg0><id>3</id><name>Test2</name><url></url></arg0></ns2:addPerson></soap:Body></soap:Envelope></pre>
</div></div><p>This does not look very informative. You only see that it is an
incoming request (REQ_IN) and the SOAP message in the log message. The logging
feature provides a lot more information though. To leverage these the pax
logging config can be changed to show the relevant MDC values.</p><h2
id="MessageLogging-Karafdecantersupporttowriteintoelasticsearch">Karaf decanter
support to write into elastic search</h2><p>Many people use elastic search for
their logging. Fortunately you do not have to write a special LogSender for
this purpose. The standard CXF logging feature will already work.</p><p>It
works like this:</p><ul><li>CXF sends the messages as slf4j events which are
processed by pax logging</li><li>Karaf Decanter LogCollector attaches to pax
logging and sends all log events into the karaf message bus (EventAdmin
topics)</li><li>Karaf Decanter ElasticSearchAppender sends the log events to a
configurable elastic search instance</li></ul><p>As Decanter also provides featu
res for a local elastic search and kibana instance you are ready to go in just
minutes.</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeHeader panelHeader pdl" style="border-bottom-width:
1px;"><b>Installing Decanter for CXF Logging</b></div><div class="codeContent
panelContent pdl">
-<pre class="brush: bash; gutter: false; theme: Default"
style="font-size:12px;">feature:repo-add
mvn:org.apache.karaf.decanter/apache-karaf-decanter/3.0.0-SNAPSHOT/xml/features
+<pre class="brush: bash; gutter: false; theme: Default">feature:repo-add
mvn:org.apache.karaf.decanter/apache-karaf-decanter/3.0.0-SNAPSHOT/xml/features
feature:install decanter-collector-log decanter-appender-elasticsearch
elasticsearch kibana</pre>
-</div></div><p><br clear="none">After that open a browser at <a shape="rect"
class="external-link" href="http://localhost:8181/kibana"
rel="nofollow">http://localhost:8181/kibana</a>. When decanter is released
kibana will be fully set up. At the moment you have to add the logstash
dashboard and change the index name to
<strong>[karaf-]YYYY.MM.DD</strong>.</p><p>Then you should see your cxf
messages like this:</p><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.liquid-reality.de/download/attachments/13860866/Screenshot%20from%202015-06-08%2017%3A21%3A20.png?version=1&modificationDate=1433777354000&api=v2"
data-image-src="http://www.liquid-reality.de/download/attachments/13860866/Screenshot%20from%202015-06-08%2017%3A21%3A20.png?version=1&modificationDate=1433777354000&api=v2"></span></p><p>Kibana
easily allows to filter for specific services and correlate requests and
responses.</p><p
>This is just a preview of decanter. I will do a more detailed post when the
>first release is out.</p><br clear="none"><br
>clear="none"><p> </p></div></div>
+</div></div><p><br clear="none">After that open a browser at <a shape="rect"
class="external-link" href="http://localhost:8181/kibana"
rel="nofollow">http://localhost:8181/kibana</a>. When decanter is released
kibana will be fully set up. At the moment you have to add the logstash
dashboard and change the index name to
<strong>[karaf-]YYYY.MM.DD</strong>.</p><p>Then you should see your cxf
messages like this:</p><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.liquid-reality.de/download/attachments/13860866/Screenshot%20from%202015-06-08%2017%3A21%3A20.png?version=1&modificationDate=1433777354000&api=v2"
data-image-src="http://www.liquid-reality.de/download/attachments/13860866/Screenshot%20from%202015-06-08%2017%3A21%3A20.png?version=1&modificationDate=1433777354000&api=v2"></span></p><p>Kibana
easily allows to filter for specific services and correlate requests and
responses.</p><p
>This is just a preview of decanter. I will do a more detailed post when the
>first release is out.</p><br clear="none"><br clear="none"><p><br
>clear="none"></p></div></div>
</div>
<!-- Content -->
</td>