Java Jersey 2.23:无法从web.xml启用LoggingFeature

Java Jersey 2.23:无法从web.xml启用LoggingFeature,java,jersey-2.0,Java,Jersey 2.0,我试图在Jersey中启用HTTP请求/响应日志记录,在Tomcat上运行。我的应用程序基于web.xml,在ResourceConfig类上没有应用程序 这就是我尝试从我的web.xml启用LoggingFeature的原因: <init-param> <param-name>jersey.config.server.provider.classnames</param-name> <param-value>org

我试图在Jersey中启用HTTP请求/响应日志记录,在Tomcat上运行。我的应用程序基于web.xml,在ResourceConfig类上没有应用程序

这就是我尝试从我的web.xml启用LoggingFeature的原因:

<init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>org.glassfish.jersey.logging.LoggingFeature</param-value>
    </init-param>

<init-param>
    <param-name>org.glassfish.jersey.logging.LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL</param-name>
    <param-value>java.util.logging.Level.FINEST</param-value>
</init-param>

<init-param>
    <param-name>org.glassfish.jersey.logging.LoggingFeature.LOGGING_FEATURE_LOGGER_NAME</param-name>
    <param-value>MyLoggerName</param-value>
</init-param>

jersey.config.server.provider.classnames
org.glassfish.jersey.logging.LoggingFeature
org.glassfish.jersey.logging.LoggingFeature.logging_FEATURE_LOGGER_LEVEL
java.util.logging.Level.FINEST
org.glassfish.jersey.logging.LoggingFeature.logging\u FEATURE\u LOGGER\u NAME
MyLoggerName

但是我在catalina.out或localhost_access.log中没有看到任何Jersey日志,这就是我如何在Eclipse中运行Tomcat的原因:

  • 找到在Eclipse中运行的tomcat的路径:

  • 在那里创建一个
    logging.properties
    文件。在我的例子中,路径是
    ../EclipseWorkSpace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf
    (您可以从实际的tomcat conf文件夹中复制此日志文件。)

  • 在应用程序中,在
    src/main/resources
    中创建
    logging.properties
    文件。 (当我直接在tomcat文档中提到的
    WEB-INF/classes
    中创建时,没有工作:

  • 要创建的servlet示例web应用程序的Example logging.properties 放置在WEB应用程序内的WEB-INF/类中: 从…起 )

  • 在上面的文件中设置tomcat日志参数,这将覆盖应用程序内部的
    /.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf
    中的默认
    logging.properties
    文件:

    handlers= java.util.logging.ConsoleHandler
    
    .level= FINE
    
    java.util.logging.ConsoleHandler.level = FINE
    java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
    
  • 这将从Tomcat记录“精细”级别的日志

  • 在您的jersey应用程序中设置日志记录属性:

    register(new LoggingFeature(Logger.getLogger(MyApplication.class.getName()), Level.INFO, LoggingFeature.Verbosity.PAYLOAD_TEXT, 2048));
    
  • 
    jersey.config.server.provider.classnames
    org.glassfish.jersey.logging.LoggingFeature
    
    这将只记录泽西岛的“信息”日志

    所以,4和5实际上意味着Tomcat将记录所有的精细日志,但Jersey只记录信息日志,所以在您的日志文件(catalina.out)中,您将只看到Jersey的信息日志,但Tomcat中其他所有内容的精细日志

    <init-param>
            <param-name>jersey.config.server.provider.classnames</param-name>
            <param-value>org.glassfish.jersey.logging.LoggingFeature</param-value>
        </init-param>