gaurav5430
gaurav5430

Reputation: 13917

Jersey LoggingFeature : in web.xml

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

Answers (1)

ray
ray

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

Related Questions