You can use the tracing and logging mechanism of the Liberty
profile for Liberty features. The logging service is part of the Liberty
kernel so you do not have to specify a feature in your server.xml file
to use it.
About this task
The Liberty profile provides the following SPIs for integrating
tracing and logging in your customized feature code:
- com.ibm.websphere.ras
- The com.ibm.websphere.ras package provides classes
to log messages and trace records, as well as some extension points.
In general,, feature code can use the java.util.logging package
to log trace and messages, and to control the output through Liberty
logging configuration, but the extended capability of the WebSphere® package is sometimes
useful and the trace guards are slightly more efficient when trace
is disabled.
- com.ibm.websphere.ras.annotations
- The com.ibm.websphere.ras.annotations package
provides annotations for use with classes in the other packages. For
example, an @Sensitive annotation can be used to
prevent the contents of the annotated variable from appearing in trace
or message output.
- com.ibm.ws.ffdc
- The com.ibm.ws.ffdc package provides facilities
to write first failure data capture (FFDC) records to assist in debugging
unexpected exceptions.
- com.ibm.wsspi.logging
- The com.ibm.wsspi.logging package provides interception
points of log and ffdc records.
The Java™ API documentation for each Liberty profile SPI is detailed in the Programming Interfaces (APIs) section of the information center, and is also available as a separate .zip file in one of the javadoc subdirectories of the ${wlp.install.dir}/dev directory.
Procedure
The following steps show you how to configure an example
Liberty feature, called myfeature, to use the tracing
and logging mechanism of the Liberty profile:
- Specify the location of the message file for the feature myfeature,
and the name of the group that is required by the com.ibm.websphere.ras.TraceComponent class.
import java.util.ResourceBundle;
public class myFeatureConstants {
public static final String TR_RESOURCE_BUNDLE =
"com.mycompany.myFeature.internal.resources.FeatureMessages";
public static final String TR_GROUP = "myFeature";
public static final ResourceBundle messages = ResourceBundle.getBundle(TR_RESOURCE_BUNDLE);
}
- In the implementation class of the feature service code,
call the register() method of the com.ibm.websphere.ras.TraceComponent class
to register the implementation class with the trace manager that is
provided by the Liberty profile. Then, you can configure the trace
manger to track the DS methods of the feature.
...
import com.ibm.websphere.ras.Tr;
import com.ibm.websphere.ras.TraceComponent;
public class myFeatureServiceImpl {
private static final TraceComponent tc = Tr.register(myFeatureServiceImpl.class);
protected void activate(ComponentContext cc, Map<String, Object> newProps) {
if (tc.isDebugEnabled()) {
Tr.debug(tc, "myFeatureComponentImpl activated"); }
...
- Use the TraceOptions annotation to specify
the trace group name and the message bundle name.
@TraceOptions(traceGroup = myFeatureConstants.TR_GROUP, messageBundle =
myFeatureConstants.TR_RESOURCE_BUNDLE)
package com.mycompany.myFeature;
import com.ibm.websphere.ras.annotation.TraceOptions;
import com.mycompany.myfeature.internal.myFeatureConstants;
...