# Tracing, Log Correlation
In this section we explain how you can hook your own trace implementation into the trace subsystem.
If you need, you can write your own implementation for tracing / log correlation.
As a good point to start you may take a look at class ...logging.simpleTrace.SimpleTraceContext
.
# Define class and bean name
Your trace implementation must implement interface ...logging.TraceContext
and declared to be a named component with prototype scope.
The name you provide for the component must then be configured in the master configuration file.
Example:
@Component
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class MyTraceContext implements TraceContext {/*...*/}
# Implement methods
Study the Javadoc of ...logging.TraceContext
to understand under what conditions the methods are invoked by OAG. Implement them accordingly.
If you do not support some of the common configuration settings in the traceProfile
:
- Return the value matching the intention of your implementation. E.g. if your implementation does not support upstream trace id communication, make sure you hardcode
return false;
in thesendTraceResponse
method implementation. - Document this in Javadoc of your class (recommended)
# Configure your custom implementation to be used by OAG
The name you provided for the component must be configured in the master configuration file, section traceProfile
, attribute type
in order to be used by OAG.
For the example provided above, the required configuration is:
traceProfile:
type: myTraceContext
# ...
# Test your implementation
Write tests to verify functionality of your trace implementation. Start OAG and verify your trace id is found in the log and sent to downstream and upstream systems as required.