Reputation: 13917
I am trying to get Jersey LoggingFeature to work. But all the examples i can find use the ResourceConfig to register it explicitly.
I don't have a ResourceConfig or Application subclass, how can i enable the LoggingFeature from web.xml ?
EDIT :
I have tried :
<servlet>
<servlet-name>myApp</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
...
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.logging.LoggingFeature</param-value>
</init-param>
</servlet>
as well as :
<servlet>
<servlet-name>myApp</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
...
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.logging.LoggingFilter</param-value>
</init-param>
</servlet>
Upvotes: 2
Views: 1994
Reputation: 115
Two ways to log the requests without having an Application
subclass.
One way is to declare the LoggingFilter
in your web.xml
file.
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.filter.LoggingFilter</param-value
</init-param>
Notice that this logger is deprecated by Jersey, and it will be removed in future version.
The other way is to define your own ContainerRequestFilter
/ContainerResponseFilter
to do logging. Make sure this class is in a package which will scanned by Jersey for resource and providers classes.
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.ext.Provider;
@Provider
public class MyLoggingFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
// replace by your own logging code
System.out.printf("%s %s\n", requestContext.getMethod(), requestContext.getUriInfo().getPath());
}
}
Upvotes: 3