我想让Jersey LoggingFeature工作。 但是我能找到的所有例子都使用ResourceConfig来明确地注册它。
我没有ResourceConfig或Application子类,如何从web.xml启用LoggingFeature?
编辑:
我试过了:
<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>
以及:
<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>
答案 0 :(得分:2)
在没有Application
子类的情况下记录请求的两种方法。
一种方法是在LoggingFilter
文件中声明web.xml
。<init-param><param-name>jersey.config.server.provider.classnames</param-name><param-value>org.glassfish.jersey.filter.LoggingFilter</param-value</init-param>
请注意,Jersey不推荐使用此记录器,将来的版本将删除它。
另一种方法是定义您自己的ContainerRequestFilter
/ ContainerResponseFilter
来进行记录。确保此类位于Jersey中将扫描资源和提供程序类的包中。
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());
}
}